算術移位指令對帶符號數進行移位。邏輯移位指令對無符號數進行移位。
算術左移、右移,邏輯左移、右移的圖示如下
算術左移和算術右移主要用來進行有符號數的倍增、減半;
邏輯左移和邏輯右移主要用來進行無符號數的倍增、減半。
算術左移和邏輯左移一樣都是右邊補0: 比如 00101011
算術左移一位:01010110
邏輯左移一位:01010110
對於二bai進制的數值來說左移n位等於原來的數值乘以2的n次方
比如00011010十進制是26,左移兩位后是01101000轉成十進制是104恰好是26的4倍。
ps:這種倍數關系只適用於左移后被舍棄的高位不含1的情況,否則會溢出。
2、算術右移,邏輯右移
邏輯右移很簡單,只要將二進制數整體右移,左邊補0即可
如10101101邏輯右移一位為01010110
算術右移符號位要一起移動,並且在左邊補上符號位,也就是如果符號位是1就補1符號位是0就補0
比如:11100算術右移一位為11110(符號位1跟着一起移動並且左邊補了1)
對於二進制的數值來說右移n位等於原來的數值除以2的n次方