原碼反碼補碼

2021-06-28 23:35:20 字數 1251 閱讀 4088

本文談論的都為有符號數。

這得從二進位制的原碼說起:

二進位制原碼最大為

0111111111111111=215-1=32767

二進位制原碼最小為

1111111111111111=-

(215-1

)=-32767正0

和負0:0000000000000000=1000000000000000=0

所以,二進位制原碼表示時,範圍是

-32767~-0

和0~32767

,因為有兩個零的存在,所以不同的數值個數一共只有

216-1

個,比16

位二進位制能夠提供的

216個編碼少1個。

但是計算機中採用二進位制補碼儲存資料。

正數編碼不變,從

0000000000000000

到0111111111111111

依舊表示0到

32767

負數需要把除符號位以後的部分取反加1,即

-32767

的補碼為

1000000000000001

。到此,再來看原碼的正0和負

0:0000000000000000

和1000000000000000

,補碼表示中,前者的補碼還是

0000000000000000

,後者經過非符號位取反加

1後,同樣變成了

0000000000000000

,也就是正0和負

0在補碼系統中的編碼是一樣的。但是,我們知道,

16位二進位制數可以表示

216個編碼,而在補碼中零的編碼只有乙個,也就是補碼中會比原碼多乙個編碼出來,這個編碼就是

1000000000000000

,因為任何乙個原碼都不可能在轉成補碼時變成

1000000000000000

所以,人為規定1000000000000000

這個補碼編碼為

-32768

所以,補碼系統中,範圍是

-32768

~32767

因此,實際上,二進位制的最小數確實是

1111111111111111

,只是二進位制補碼的最小值才是

1000000000000000

,而補碼的

1111111111111111

是二進位制值的-1。

原碼 反碼 補碼

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