好友
阅读权限20
听众
最后登录1970-1-1
|
易语言无符号右移/逻辑右移模块
汇编语言中SAR和SHR指令的区别
1、方向不同通过gdb动态调试得到每次循环的值进行比对,才发现出现错误的具体原因。sar在符号位为1时,右移时填充1,符号位为0时填充0。而python默认的右移运算为逻辑右移运算,右移时默认填充0,与符号位无关。
2、作用不同
汇编语言中SAR和SHR指令都是右移指令,SAR是算数右移指令(shift arithmetic right),而SHR是逻辑右移指令(shift logical right)。SAR右移时保留操作数的符号,即用符号位来补足,而SHR右移时总是用0来补足。例如10000000算数右移一位是11000000,而逻辑右移一位是01000000。3、顺序不同SAR是算术右移,比较特殊。他的最高位一直是不变的。如1000 0000算术右移7位后就成了1111 1111。SAR右移的时候,最高位不变,最低位移入CF。
易语言位操作 【右移】为算术右移,相当于SAR,若想实现SHR右移指令,可以采用以下办法
.版本 2
.子程序 右移_逻辑, 长整数型, , ※易语言无符号右移/逻辑右移模块
.参数 x, 长整数型, , ※参数_右移数值 长整数型
.参数 y, 整数型, , ※参数_右移长度 整数型
.局部变量 s, 长整数型
.局部变量 w, 长整数型
.局部变量 d, 长整数型
' 2021年12月7日来源于互联网
s = 右移 (x, y)
w = 左移 (取字节集长度 (到字节集 (s)), 3)
d = 位与 (s, 位取反 (左移 (-1, w - y)))
返回 (d)
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|