補碼 原碼 反碼

2021-06-14 08:30:23 字數 1780 閱讀 5067

假設有乙個 int 型別的數,值為5,那麼,我們知道它在計算機中表示為:

00000000 00000000 00000000 00000101

5轉換成二制是101,不過int型別的數占用4位元組(32位),所以前面填了一堆0。

現在想知道,-5在計算機中如何表示?

在計算機中,負數以原碼的補碼形式表達。

什麼叫補碼呢?這得從原碼,反碼說起。

原碼:乙個正數,按照絕對值大小轉換成的二進位制數;乙個負數按照絕對值大小轉換成的二進位制數,然後最高位補1,稱為原碼。

比如 00000000 00000000 00000000 00000101 是 5的 原碼。

10000000 00000000 00000000 00000101 是 -5的 原碼。

反碼:正數的反碼與原碼相同,負數的反碼為對該數的原碼除符號位外各位取反。

取反操作指:原為1,得0;原為0,得1。(1變0; 0變1)

比如:正數00000000 00000000 00000000 00000101 的反碼還是 00000000 00000000 00000000 00000101

負數10000000 00000000 00000000 00000101每一位取反(除符號位),得11111111 11111111 11111111 11111010。

稱:11111111 11111111 11111111 11111010 是 10000000 00000000 00000000 00000101 的反碼。

反碼是相互的,所以也可稱:

10000000 00000000 00000000 00000101 和 11111111 11111111 11111111 11111010互為反碼。

補碼:正數的補碼與原碼相同,負數的補碼為對該數的原碼除符號位外各位取反,然後在最後一位加1.

比如:10000000 00000000 00000000 00000101 的反碼是:11111111 11111111 11111111 11111010。

那麼,補碼為:

11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

所以,-5 在計算機中表達為:11111111 11111111 11111111 11111011。轉換為十六進製制:0xfffffffb。

再舉一例,我們來看整數-1在計算機中如何表示。

假設這也是乙個int型別,那麼:

1、先取-1的原碼:10000000 00000000 00000000 00000001

2、得反碼:     11111111 11111111 11111111 11111110(除符號位按位取反)

3、得補碼:     11111111 11111111 11111111 11111111

可見,-1在計算機裡用二進位制表達就是全1。16進製為:0xffffff

主要知識點:

正數的反碼和補碼都與原碼相同。

而負數的反碼為對該數的原碼除符號位外各位取反。

負數的補碼為對該數的原碼除符號位外各位取反,然後在最後一位加1

下面是書上原文:

原碼表示法規定:用符號位和數值表示帶符號數,正數的符號位用「0」表示,負數的符號位用「1」表示,數值部分用二進位制形式表示。

反碼表示法規定:正數的反碼與原碼相同,負數的反碼為對該數的原碼除符號位外各位取反。

補碼表示法規定:正數的補碼與原碼相同,負數的補碼為對該數的原碼除符號位外各位取反,然後在最後一位加1.

正零和負零的補碼相同,[+0]補=[-0]補=0000 0000b

原碼 反碼 補碼

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