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

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--);
                }
           }
        }
}

这个是低电平点亮,为什么左移可以,右移不行啊,朋友帮我看看啊!!谢谢了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
y574924080
1楼-- · 2020-02-04 09:47
本帖最后由 y574924080 于 2012-4-17 21:47 编辑

建议排版 弄好一些~~~~~~

然后加上注释 ,

要不没人想看
徐照林
2楼-- · 2020-02-04 12:11
y574924080 发表于 2012-4-17 21:43
建议排版 弄好一些~~~~~~

然后加上注释 ,

嗯,   我去弄一下
bangbangji
3楼-- · 2020-02-04 16:57
本帖最后由 bangbangji 于 2012-4-17 21:56 编辑

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

补充一下,上面有点错误,<<有的也可以移入标志位,像51的汇编里有带标志位的移位,也有循环移位吧。
徐照林
4楼-- · 2020-02-04 21:44
 精彩回答 2  元偷偷看……
y574924080
5楼-- · 2020-02-05 01:55
可以用这个编辑代码 ~~~~~~~~~~~~~~~
徐照林
6楼-- · 2020-02-05 01:57
bangbangji 发表于 2012-4-17 21:51
我也不想看,不过提醒你一下吧。
移入的可能是1,可能是0,也可能是某个标志位
仔细研究一下这个区别,应该 ...

为什么左移与右移有什么差别吗??? 左移可以为什么右移不行啊,我似乎找不到原因啊!

一周热门 更多>