在計算機中,原碼、反碼以及補碼是為了區分正數與負數的表達與運算設計出來的,其中負數的二進位制表示是先把數字獲得二進位制原碼經反碼再補碼得到的
在原碼中即把數字直接轉換為二進位制,其中第一位為符號位
(符號位0代表整數,符號位1代表負數),其餘為該數的二進位制原碼;例如下面是+12與-12的原碼的表達方式:
+12:
0000
1100-12
:1000
1100
在原碼中正數與負數的二進位製碼除了符號位有區別外,其他是一樣的;這裡使用的是8位的二進位制,使用多少位的二進位制只是限制的數的取值範圍,並沒有多大的影響
上面8位的二進位制因為有一位的符號位,因此它的取值範圍為2^7 即:[-127,0] 和[0,127]
反碼,即對乙個負數除符號位外的每一位的二進位制原碼進行取反(因為正數的反碼還是其本身);我們把上面拿到的+12與-12的二進位制原碼進行反碼得到:
+
12:0000
1100 (正數的反碼還是其本身)
-12:
1111
0011
補碼,負數的補碼在反碼的基礎上加1
;正數的補碼還是其本身,如:
+
12:0000
1100 (正數的反碼還是其本身)
-12:
1111
0100
例如在計算12 + (-12)
在我們看來是很簡單的,因為計算機在運算時不像人腦一樣知道怎樣計算的,它即使轉為原碼後相加後得到的結果很明顯不是我們想要的:
(+12
)0000
1100+(
-12)1000
1100
=1001
1000
我們把-12反碼補碼後的二進位製碼為:
-12:
1000
1100
-->原碼
1111
0011
-->反碼
1111
0100
-->補碼
此時我們再把12+(-12)
執行,式子變成了如下:
(+12
)0000
1100+(
-12)1111
0100
=0000
0000
-->結果
因為這裡用的是8位的的二進位制位,然後相加後超出的部分就被丟棄了然後變成了0000 0000;並且也不會存在-0這個數 二進位制資料與原碼 反碼 補碼
一 二進位制基礎 位運算是指二進位制位的運算,在系統軟體中,經常要處理一些二進位制位的問題,例如 在進行計算機之間的通訊的時候需要通過某些標誌位來進行判斷通訊是否成 功。計算機中的儲存器就是由許多位元組 byte 單元組成的。一般,記憶體的最小度量單位就叫做位 bit 也叫位元。而乙個位元組就是由8...
二進位制數的原碼反碼與補碼
眾所周知,二進位制是我們計算機語法的基本組成,他以0和1為基礎,構建了我們多樣神奇的資訊世界。因此說,二進位制對於我們是十分重要的。對於二進位制來說,他在計算機中有三中表示方法 原碼 反碼和補碼。這三種碼的區別,就是對於正負表示不同的區別。對於原碼來說,他對於正負的表示方法是在整個二進位制數前加0或...
二進位制的原碼 反碼 補碼
如何表示二進位制數的正負呢 通常採用的方法是在二進位制數的前面加一位符號位,符號位為0表示這個數是正數,符號位位1表示這個數字負數,這種形式的數就稱為原碼。為什麼需要二進位制補碼 在做減法時,如果兩個數時用原碼表示的,則首先需要比較兩數絕對值的大小,然後以絕對值大的乙個數作為被減數 絕對值小的乙個作...