用c写51单片机代码,其中“>>”来移位实现的功能是什么?
发布网友
发布时间:2023-10-11 20:55
我来回答
共3个回答
热心网友
时间:15分钟前
a>>6表示a左移6位,也就是除以32,这样可以加快单片机的处理速度(移位运算速度远高于除法),a本身的值不变;
左移右移运算只对int,char有效,float和double则不可以~
1<<i就是1右移i位,多数情况都是为后续的位运算做准备…… 比如按位与,按位或,最常用的就是判断单片机IO口的状态~
热心网友
时间:14分钟前
判断a的值向右移6位等不等于1,如果等于1执行大括号的内容
8位数向右移了6位,前面的6位都已经补0了,所以判断的应该是判断高两位的等不等于1,也是初学,个人理解
a的值在 if 以后是否改变呢?不会
>>,<<是对位进行移位!
热心网友
时间:14分钟前
比如unsigned char a=0x55;
a=0101'0101b
a>>6=0000'0001b
>>和<<是对寄存器运算,相当于汇编中的LSR和LSF(logic shift right/left),是位运算。
if ( (a>>6)==1 ) {...}
可以写成
if((a&0x40)==1){...}
比较高效