单片机C语言右移指令怎么用?

想用右移指令实现流水灯,用for语句循环8次以下语句
unsigned char x,y;
x=0x01;
for(y=0,y<8;y++)
{
x=(x>>1);
P0=x;
}
为什么结果显示的是 先点亮2个,然后3个,4个,5个。。 请望高人指点。。。

第1个回答  2015-05-27
  在C语言中“>>”代表右移运算符,就相当于“shr”。该运算符为双目运算符,结合方向为从左到右,作用是把一个整型数的所有位向右移动指定的位数,移动到右边界之外的多余二进制位会被丢弃,并从左边界移入0。举例:计算表达式14 >> 2的值。
  表达式14 >> 2的值为3,因为14(即二进制的0000 1110)向右移两位等于3(即二进制的0000 0011)。
第2个回答  2010-04-05
你的二极管是低电平亮还是高电平亮?