原碼 反碼 補碼

2022-09-08 18:48:09 字數 1325 閱讀 8518

由計算機的硬體決定,任何儲存於計算機中的資料,其本質都是以二進位製碼儲存,乙個二進位制稱為1個bit,而8個bit組成乙個位元組,位元組通常是資料儲存的基本單位。

計算機中的儲存通常以位元組為單位,乙個位元組數8位,即1b(byte)=8b(bit),乙個英文是乙個位元組,而乙個漢字是兩個位元組。

假設有4個位元位:

表示無符號正數,就是0 ~ 15

表示有符號整數,那麼其中一半給到+1 ~ +7,另一半給到-1 ~ -7

既然0010表示+2,那麼如果最左邊的bit位替換成1就表示對應的負數,即1010表示-2

0000

00100

41000

-01100

-40001

10101

51001

-11101

-50010

20110

61010

-21110

-60011

30111

71011

-31111

-7這就是原碼,但是此時會導致出現0和-0,這兩個值在數學意義上的意思相同,二進位制編碼卻不同

並且此時2+(-2)=0010+1010=1100=-4,是時候採用新的編碼方法了

既然0010表示+2,那就將所有進製反轉表示負數不就行了,即1101表示-2

0000

00100

41111

-01011

-40001

10101

51110

-11010

-50010

20110

61101

-21001

-60011

30111

71100

-31000

-7這就是反碼,此方法也會導致0和-0的二進位制值不相同

此時2+(-2)=0010+1101=1111=-0,也勉強可用,但有沒有更好的方法?

在負數反碼的基礎上如-2(1101)加上(0001)得到(1110)

此時2+(-2)=0010+1110=10000此時我們可以放心的忽略掉該進製即變成0000=0

補碼表為:

0000

00100

41000

-81100

-40001

10101

51111

-11011

-50010

20110

61110

-21010

-60011

30111

71101

-31001

-7

原碼 反碼 補碼

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