小弟求解啊,为什么<<左移可以,>>右移为什么不行了!

2020-02-04 09:11发布

#include<reg52.h>
char a;
unsigned int b,c,flag;
sbit F1 = P2^6;
void main()
{
    a = 0xff;
        while(1)
        {   
            b = 50000;
            c = 50000;
            a = a<<1;
                P1 = a;
                while(b--);
                if(a == 0x00)
                {
                   a = 0xfe;
                   flag = 1;
                   while(c--);  
        }
                while( flag == 1)
                {   
                    a = 0x7f;
                    b = 1000;
                c = 1000;
                        a >>= 1;
                        P1 = a;
                        while(b--);
                        if(a == 0x00)
                        {   
                           P1 = 0xfe;
                           flag = 0;
                           while(c--);
                }
           }
        }
}

这个是低电平点亮,为什么左移可以,右移不行啊,朋友帮我看看啊!!谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
15条回答
bangbangji
2020-02-04 16:57
本帖最后由 bangbangji 于 2012-4-17 21:56 编辑

我也不想看,不过提醒你一下吧。
<<都是在最低位移入0
>>移入的可能是1,可能是0,也可能是某个标志位
仔细研究一下这个区别,应该就可以搞定了

补充一下,上面有点错误,<<有的也可以移入标志位,像51的汇编里有带标志位的移位,也有循环移位吧。

一周热门 更多>