計算機系統中,數值一律用補碼來表示和儲存。原因在於,有如下好處:
使用補碼,可以將符號位和數值域統一處理;
加法和減法也可以統一處理。
補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。
設機器字長為n,則乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位:正數為0,負數為1。剩下的n-1位表示該數的絕對值。以n=
8 為例: x=
+101011,[
x]原=
00101011 x
=−101011,[
x]原=
10101011
位數不夠的用0補全。
ps:正數的原、反、補碼都一樣;0的原碼跟反碼有兩個,因為這裡0被分為+0和-0。
在原碼的基礎上,符號位不變其餘位按位取反(即是0變1,1變0),同樣以n=
8 為例: x=
−101011,[
x]原=
10101011,[
x]反=
11010100
ps:0的補碼是唯一的,如果機器字長為8那麼[0
]補=00000000
。
乙個負整數(或原碼)與其補數(或補碼)相加,和為模。
原碼和補碼互為補碼(即,對乙個整數的補碼再求補碼,等於該整數自身)。
補碼的正零與負零表示方法相同。
他人博文
為何signed char範圍為-128~127
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...
原碼 反碼 補碼
正數 原碼 反碼 補碼一樣 7 原 0 0000111 b 7 反 0 0000111 b 7 補 0 0000111 b 負數 原碼就是原來的表示方法 反碼是除符號位 最高位 外取反 補碼 反碼 1 7 原 1 0000111 b 7 反 1 1111000 b 7 補 1 1111001 b 當...
原碼 反碼 補碼
數值在計算機中表示形式為機器數 計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的 是十進位制,正如亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手 指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘...