单片机编程中符号“《”的意思

来源:百度知道 编辑:UC知道 时间:2024/09/22 05:44:58
大家帮忙看看下列程序哪有问题啊,为什么P2显示的是0XFE,0XFC,0XF8
#include"reg51.h"
unsigned char table[]={0x3f,0x06,0x5b};
void init()
{
P1=0X00;
P2=0x00;
}
void Delay(unsigned int i)
{
unsigned int j;
for(;i>0;i++)
for(j=0;j<100;j++);
}
void disp()
{
unsigned int i;
unsigned int temp=0xfe;
for(i=0;i<3;i++)
{
P2=temp;
P1=table[i];
Delay(20);
temp=temp<<1;
}
}
void main()
{
init();
while(1)
{
disp();
}
}
那我想循环表示TEMP,即P2能显示0XFE,0XFD,0XFB

temp=temp<<1;这一句表示对temp循环左移,如果想得到你想得到的结果,直接用减1就行了,也就是temp-=1;

<<符号表示按位左移,右边空出位补0。因此FE = 1111 1110,左移一位后变为1111 1100 = FC,再左移一位后变为1111 1000 = F8。

二进制左移一位,右边补零
如0x0040
0x4040 << 1 = 0x8080;
0x4040 << 2 = 0x0100;
0x4040 << 3 = 0x0200;
...

左移。