不是太理解位移函数概念

RESULT := ROL (IN:=BYTE#2#1101_0011, N:=5);
 //2#0111_1010 

//(= 122 十进制)参数IN中的值被向左循环移动参数N的内容说明的位数。

 
RESULT := ROR (IN:=BYTE#2#1101_0011, N:=2);
 //2#1111_0100 

//(= 244 十进制)参数IN中的值被向右循环移动参数N的内容说明的位数。

 
RESULT := SHL (IN:=BYTE#2#1101_0011, N:=3);
 //2#1001_1000 

//(= 152 十进制)参数IN中的值被向左移动参数N的内容说明的位数,右侧位用0代替。

 
RESULT := SHR (IN:=BYTE#2#1101_0011, N:=2);
 //2#0011_0100 
参数IN中的值被向右移动参数N的内容说明的位数,左侧位用0代替。
不是太理解具体的算法,那位老师再给讲详细点,结果是如何得出的,谢谢。
//(= 52 十进制)
 

最佳答案

ROL(Rotate Left): 循环左移,把数据循环右移 N 次,每次从最低位(最右)移出的数据位都补充到最高位(最左)。
ROR(Rotate Right): 循环右移,与 ROL 相反。
SHL(Shift Left): 逻辑左移,数据往左移动,然后在右边补 N 个零。相当于乘以 2 的 N 次方。
SHR(Shift Right): 逻辑右移,数据往右移动,在左边补 N 个零。相当于除以 2 的 N 次方。
参考资料:http://www.cnblogs.com/del/archive/2010/04/15/1712490.html

提问者对于答案的评价:
thanks

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc306006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 下午3:48
下一篇 2020年10月31日 下午3:48

相关推荐