算術移位與邏輯移位


算術移位指令對帶符號數進行移位。邏輯移位指令對無符號數進行移位。
算術左移、右移,邏輯左移、右移的圖示如下 
 
算術移位和邏輯移位的區別(轉)

 

算術左移和算術右移主要用來進行有符號數的倍增、減半; 

邏輯左移和邏輯右移主要用來進行無符號數的倍增、減半。

 

算術左移和邏輯左移一樣都是右邊補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次方 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM