原碼VS補碼 (對於有符號數而言)

原碼的表示思想是最高位爲符號位,其餘位爲絕對值。

假設某類型有8位,X7 X6 X5 X4 X3 X2 X1 X0


最大正數 0 111 1111  +127
最小負數 1 111 1111  -128 (數值位爲2^7 -128,即零)
 則其表示範圍是 -127 到+127   (2^7 -1)

原碼的表示方法簡單,但是在做有符號加法時較爲複雜(兩數異號時,需要比較絕對值大小,再做減法)。而補碼錶示法很好的解決了這個問題(直接加減即可)。

補碼的最高位表示符號位,數值位分兩種情況

正數的數值位不變
負數的數值位爲2^n - 該負數的絕對值。

例如:  X7 X6 X5 X4 X3 X2 X1 X0

最大正數 0 111 1111  +127
最小負數 1 000 0000  -128 (數值位爲2^7 -128,即零)

補碼的表示範圍是 +(2^n -1) 到 - (2^n)
由此可見 補碼的表示範圍比原碼在負數域多一個,(這不是最重要的,重要的是簡化了運算)

補碼錶示的另一種理解爲
正數表示爲它本身
負數表示爲2^(n+1) + x   -----因爲x是負數所以相當於減去它的絕對值。
發佈了35 篇原創文章 · 獲贊 36 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章