原碼 反碼 補碼

2021-08-21 20:43:06 字數 1071 閱讀 7606

因為人類有十個手指頭可以用來輔助計算,因此,人類的計數方式都採用十進位制。

內容

原碼反碼

補碼我們都知道計算機的內部計數是建立在二進位制之上,那麼為了能夠表示正負數,用數碼序列中的最高位作為符號位,0代表整數,1代表負數。

以 8 位的序列為例:

最高位其餘位

十進位制0

000000111

0000001

-1原碼的表達方式簡潔直觀,但是會帶來乙個問題,那就是當正數和負數相加時,比如10000001 + 00000001 = 10000010,也就是說,造成了-1 + 1 = -2的錯誤結果。這時候引入反碼:

定義:如果該樹是正數,其反碼等於原碼;如果該數是負數,其反碼等於其原碼的各位(符號位除外)取反。

比如,-1原碼為10000001,對應的反碼為11111110

那麼,11111110 + 00000001 = 11111111,得到-1 + 1 = -0的結果。

這麼做,解決了-1 + 1 = 0的問題,但是又出現了乙個問題,那就是11111111 != 00000000-0 != 0的問題。於是,引入了補碼。

定義:正數的補碼不變等於其原碼;而負數的補碼等於其反碼加1

比如,-1原碼為10000001,對應的反碼為11111110,則其補碼為11111111

如此一來,11111111 + 00000001 = 00000000得到了-1 + 1 = 0的結果。

深入理解機器碼(原碼、反碼、補碼)和算數溢位

原碼 反碼 補碼

正數 原碼 反碼 補碼一樣 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進製 的實踐要比二或三進製計數出現的晚.摘...