02 算術左移邏輯左移,算術右移邏輯右移

2021-07-23 17:36:28 字數 691 閱讀 5083



算​術左移和邏輯左移一樣都是右邊補0:

比如 00101011​

算術左移一位:01010110

邏輯左移一位​:01010110

對於二進位制的數值來說左移n位等於原來的數值乘以2的n次方

比如00011010十進位制是26,左移兩位後是011010​00轉成十進位制是104恰好是26的4倍。

ps:這種倍數關係只適用於左移後被捨棄的高位不含1的情況,否則會溢位。​

​邏輯右移很簡單,只要將二進位制數整體右移,左邊補0即可

如10101101邏輯右移一位為01010110

算術右移符號位要一起移動,並且在左邊補上符號位,也就是如果符號位是1就補1符號位是0就補0

比如:11100算術右移一位為11110(符號位1跟著一起移動並且左邊補了1)

對於二進位制的數值來說右移n位等於原來的數值除以2的n次方

比如10110100十進位制是76(需要先將這個補碼轉換成原碼之後再轉換成十進位制),右移兩位後是11101101轉成十進位制是19恰好是76的4倍。

​ps:這種倍數關係只適用於右移後被捨棄的低位不含1的情況,否則每舍一次1則代表餘數被捨去,保留整數部分。

注意!!!這裡的二進位制都是補碼,因為計算機中是用補碼進行運算的,上面舉的例子都為正數所以補碼和原碼一樣,如果是負數要注意需要先將補碼轉換成原始碼才能轉換成十進位制

移位操作 邏輯左移 邏輯右移 算術右移

常常會混淆移位操作的概念,因此在這裡記錄下測試程式。public class main 關於二進位制數加減法 原碼 反碼 補碼 正數 原碼就是原始數值的二進位制表示形式,最高位符號位是0 反碼是原碼的按位置取反 補碼是反碼的基礎上 1 負數 原碼就是最高位為1的表示形式 反碼是最高位的符號位不變,其...

算術左移後溢位判斷

取一位元組為例,能表示的數字從 128 127 先看正數,比如 9,就是 0000 1001,最高位 符號位 和資料最高位都是 0.左移得到 0001 0010 也就是 18 再看負數 9,就是 0000 1001 也就是 1111 0110 1 即 1111 0111,最高位 符號位 和資料最高位...

邏輯右移和算術右移

問題描述 在寫嵌入式的程式中,常會將資料定義為unsigned int,這樣定義有什麼好處呢?下面從邏輯右移和算術右移的角度進行分析。分析 1 邏輯右移和算術右移 邏輯右移,移走的位填充為0 算術右移,移走的位填充與符號位有關,例如如果為負數,則移走的位填充為1。2 unsigned int 和 i...