⑴ 匯編語言中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。