二進位制補碼

2021-06-05 10:36:01 字數 1404 閱讀 9812

二進位制補碼

計算機儲存資料都是以0,1二進位制進行儲存。

對於有符號整數儲存(對於浮點數待續),引入補碼概念。

原碼即直接將真值轉換為其相應的二進位制形式,而反碼和補碼是對原碼進行某種轉換編碼方式。

對於正整數, 原碼,反碼和補碼都相一樣

對於負整數, 補碼等於反碼加1,而反碼等於原碼除符號位不變其他位按位求反

以byte為例,

1 byte 等於 8bit,也就是8個二進位制,

最高位0代表正數,1代表負數。

所以對於8位的二進位制所有全排列: 0000 0000 -> 1111 1111 一共 2^8 = 256, 即可以表示256個整數(-128 -> 0 -> 127)

整數         原碼          反碼     補碼

-128    1000 0000    1111 1111    1000 0000

-127    1111 1111    1000 0000    1000 0001

-126    1111 1110    1000 0001    1000 0010

***            

-1        1000 0001    1111 1110    1111 1111

0        0000 0000    0000 0000    0000 0000

1        0000 0001    0000 0001    0000 0001

***            

127        0111 1111    0111 1111    0111 1111

採用補碼的原因如下。

二補數(2's complement)/補碼 系統的最大優點是可以在加法或減法處理中,不需因為數字的正負而使用不同的計算方式。只要一種加法電路就可以處理各種有號數加法,

而且減法可以用乙個數加上另乙個數的二補數來表示,因此只要有加法電路及二補數電路即可完成各種有號數加法及減法,在電路設計上相當方便。

採用補碼運算具有如下兩個特徵:

1)因為使用補碼可以將符號位和其他位統一處理,同時,減法也可以按加法來處理,即如果是補碼表示的數,不管是加減法都直接用加法運算即可實現。

3-1 :

0000 0011

+ 1111 1111

-------------

10000 0010 -> 忽略 符號位前1位 即 0000 0010 -> 2

2)兩個用補碼表示的數相加時,如果最高位(符號位)有進製,則進製被捨棄。

這樣的運算有兩個好處:

1)使符號位能與有效值部分一起參加運算,從而簡化運算規則。從而可以簡化運算器的結構,提高運算速度;(減法運算可以用加法運算表示出來。)

2)加法運算比減法運算更易於實現。使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計。

二進位制補碼

計算機只能識別0和1,使用的是二進位制,而在日常生活中人們使用的是十進位制,正如 亞里斯多德早就指出的那樣,今天十進位制的廣泛採用,只不過我們絕大多數人生來具有10個手指頭這個解剖學事實的結果.儘管在歷史上手指計數 5,10進製 的實踐要比二或三進製計數出現的晚.摘自 數學發展史 有空大家可以看看哦...

二進位制補碼

二進位制補碼主要是為了解決負整數的加減法運算 減法轉化為加法 原碼表示法就是用二進位制的最高位表示符號,0表示正數,1表示負數。以8位為例 1就是表示為0000 0001,1表示為1000 0001.而補碼的規則是正整數保持不變,針對負整數,除符號位外,其他位全部取反,然後 1。注 負整數中,原碼轉...

二進位制補碼

在計算機系統中,數值一律用二進位制補碼進行表示,補碼的計算規則是 補碼 等於 原碼按位 取反 再 加 1。有符號型別的數值,最高位是符號位,1為負數,0為正數。按照補碼計算規則,可得 正數的補碼等於其原碼。如 char num num 1 如 1 的原碼是 0000 0001 補碼也是 0000 0...