_crol_, _cror_,等等函数我知道,是循环移位的意思,这些函数的功能和标准C的移位操作符"<<"和">>"有什么区别呢!
他们在执行效率上有不同!
标准C的移位操作符"<<"左移一次,超过8位的就被舍去了,最低位补0
">>"右移一次,超过8位的就被舍去了,最高位补0
_crol_, _cror_,是循环移位
执行效率肯定是标准C的移位效率高,因为不用管移出的超过8位的位
ACC >>= 1;和
ACC = ACC >> 1;
是一样的吗,我怎么看有的文件上面这样用ACC = ACC >> 1是循环移位!
循环,就是带进位移位,C中的>>和<<是不带进位的。
ACC >>= 1;和
ACC = ACC >> 1;
是一样的
ACC >>= 1;//是C风格而
ACC = ACC >> 1;//是basic风格。
引用: 引用 6 楼 schlafenhamster 的回复:
循环,就是带进位移位,C中的>>和<<是不带进位的。
ACC >>= 1;和
ACC = ACC >> 1;
是一样的
ACC >>= 1;//是C风格而
ACC = ACC >> 1;//是basic风格。
不是这样的吧,51里面不带进位的循环移位也有相应指令啊,并不是只有带进位的移位的才叫循环移位!
比如
RR A
RL A
这个就是不带进位的循环移位
;原来就没有“循环”的说法
RR A;原名:Rotate Right
RL A; Rotate Left
;
RCR A;原名 Rotate Right through Carry、
RCL A