原碼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是負數所以相當於減去它的絕對值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.