51单片机的C语言P2=P2<<1|P2>>7是什么意思?

2020-02-05 09:24发布

P2=0x01;
51单片机的C语言P2=P2<<1|P2>>7是什么意思?
表示的循环左移么?
像这样用过可以。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
Arrowzhang
1楼-- · 2020-02-05 13:17
P2左移一位 与 P2右移七位 相或,就是循环左移
abcfanyuan
2楼-- · 2020-02-05 14:52
Arrowzhang 发表于 2012-5-12 12:37
P2左移一位 与 P2右移七位 相或,就是循环左移

但是先左移移1位后P2变了。然后再右移7位么?
y574924080
3楼-- · 2020-02-05 15:40
 精彩回答 2  元偷偷看……
Arrowzhang
4楼-- · 2020-02-05 18:57
P2左移1位产生的值没给P2,P2就没变。P<<1和P>>7是两个值,相或之后,最后才给P2,P2才变
zjw2012
5楼-- · 2020-02-05 22:10
abcfanyuan 发表于 2012-5-12 12:48
但是先左移移1位后P2变了。然后再右移7位么?

P2=P2<<1|P2>>7;
1:P2左移之后,P2的值并没有改变,左移一位之后的值被保存在了CPU寄存器X(假定为x)里;
2:P2右移7位,P2的值并没有改变,右移7位之后的值被保存在CPU寄存器Y(假定为Y)里;
3:将X|Y的值赋给P2,此时P2的值才被改变。
此表达式的意义在:将P2循环左移一位。
abcfanyuan
6楼-- · 2020-02-06 03:19
y574924080 发表于 2012-5-12 13:01
如图,可以看出两次的P2都是去一样的值

明白  谢谢啦

一周热门 更多>