当前位置: 代码迷 >> 单片机 >> C51中的 intrins.h中的循环移位函数和标准C中的移位符号"<<"和">>"疑惑,望牛人解答!解决方案
  详细解决方案

C51中的 intrins.h中的循环移位函数和标准C中的移位符号"<<"和">>"疑惑,望牛人解答!解决方案

热度:192   发布时间:2016-04-28 16:25:10.0
C51中的 intrins.h中的循环移位函数和标准C中的移位符号"<<"和">>"疑惑,望牛人解答!
_crol_, _cror_,等等函数我知道,是循环移位的意思,这些函数的功能和标准C的移位操作符"<<"和">>"有什么区别呢!
他们在执行效率上有不同!

------解决方案--------------------
标准C的移位操作符"<<"左移一次,超过8位的就被舍去了,最低位补0
">>"右移一次,超过8位的就被舍去了,最高位补0
_crol_, _cror_,是循环移位
执行效率肯定是标准C的移位效率高,因为不用管移出的超过8位的位
------解决方案--------------------
探讨
标准C的移位操作符"<<"左移一次,超过8位的就被舍去了,最低位补0
">>"右移一次,超过8位的就被舍去了,最高位补0
_crol_, _cror_,是循环移位
执行效率肯定是标准C的移位效率高,因为不用管移出的超过8位的位

------解决方案--------------------
同意楼上
------解决方案--------------------
循环,就是带进位移位,C中的>>和<<是不带进位的。
ACC >>= 1;和
ACC = ACC >> 1;
是一样的
ACC >>= 1;//是C风格而
ACC = ACC >> 1;//是basic风格。
------解决方案--------------------
C里面没有循环位移


------解决方案--------------------
;原来就没有“循环”的说法
RR A;原名:Rotate Right
RL A; Rotate Left

RCR A;原名 Rotate Right through Carry、
RCL A
  相关解决方案