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