Delphi Shl與Shr 移位操作介紹

2021-05-10 22:52:46 字數 506 閱讀 7162

格式:運算元 shl/shr 移動位數

說明:運算元與返回值都是整數

例子:16(10) = 10000(2)

16(10) shr 1 = 10000(2) shr 1 = 1000(2) = 8(10)

16(10) shr 2 = 10000(2) shr 2 = 100(2) = 4(10)

說明:乙個整數(i)按位左移一位,相當於把它乘以2,即 i * 2

乙個整數(i)按位右移一位,相當於把它除以2,即 i div 2

乙個整數(i)按位左移2 位,相當於把它乘以2再乘2,即 (i * 2) * 2

乙個整數(i)按位右移2 位,相當於把它除以2再除2,即 (i div 2) div 2

分析:引用我們最常用的十進位制來說明,假如有乙個數16,在十進位制中住右移一位,結果剩1,左移一位即是160,相當於16 div 10 和 16 * 10;

同理,在二進位制中整除和乘的是2。

得到如下:結果只是運算元與進製數之間的操作了。

8086邏輯移位指令SHL和SHR

shl邏輯左移指令shl oprd m 把運算元oprd左移m位,m為位移次數,為1或為cl 位移超過1次用cl表示 每移動一位右邊用0補足一位,移出的最高位進入cf 最後移出的一位寫入cf mov al,00010011b 13h 00010011b shl al,1 把al左移1位,移出的最高位...

彙編 sar與shr的坑爹之旅。

一道簡單逆向題目卡了我好久。主要還是彙編太渣。是關於sar和shr的具體功能不熟悉導致的。組合語言中sar和shr指令都是右移指令,sar是算數右移指令 shift arithmetic right 而shr是邏輯右移指令 shift logical right 兩者的區別在於sar右移時保留運算元...

算數移位 , 與邏輯移位

是算數移位,也就是 1,如果右移,則 最高位補1 左移,則右邊補0 但是uint32 t的10 00 00 00 右邊移動後,是什麼?補0唄,因為大於0 所以所有的位移操作都最好定義為unsigned data 什麼叫邏輯移位和算術移位 1 算術移位 當乘數或除數是2n時,算術移位用來快速地完成對整...