⑴ 汇编语言中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。