計算機基礎知識 原碼 反碼 補碼

2021-10-02 20:35:35 字數 834 閱讀 6836

在計算機內,定點數有3種表示法:原碼、反碼和補碼。反碼是數值儲存的一種,但是由於補碼更能有效表現數字在計算機中的形式,所以多數計算機一般都不採用反碼表示數。

在數值資料中分為有符號數與無符號數,其中,有符號數的最高位為符號位,最高位為「0」代表正數,最高位為"1"表示負數。因此對於乙個單位元組的二進位制數而言,有符號數所表示的數值範圍為:-127 (11111111) ~ +127 (00000000) ;無符號數的表示範圍為:0 ~ 255 [00000000 ~ 11111111]。

原碼:最高位為符號位,0代表正數,1代表負數;有符號數除符號位外均為該數的模。

反碼:正數的反碼與其原碼一致,而負數的反碼為除符號位外全部按位取反。

補碼:正數的補碼與其原碼一致,而負數的補碼為其反碼加1.

首先,在計算機中進行加減乘除的算術運算時,計算機都是通過加法和位移運算所實現的。而若是用反碼來進行儲存資料的話或出現一些問題,具體可以看一下示例:

以減法為例:假設我們要計算5-5,由上述可知,在計算機中實際的操作為5 +(-5)。

當資料用反碼儲存時,此時5 -5 計算過程即為:00000101 + 11111010=11111111,轉換為原碼即為-0(10000000);此時就存在這麼乙個問題,即在計算機中存在+0(00000000)與-0(11111111)兩種表示0的二進位制數。

而用補碼計算時:5-5 = 00000101 + 11111011 = 100000000,可知結果超出了8位,保留後8位,結果即為00000000。

綜上的,計算機一般採用補碼進行資料儲存。

計算機基礎知識 原碼反碼補碼

我們知道所有資料最終都是使用二進位制數表達在計算機內表示的,假設計算機為32位作業系統那麼其內部存放的資料是 4個位元組,每個位元組佔8個二進位制位 1byte 8bit 計算機內的負數是以其正值的補碼形式表達的 假設0x 0b其機器內表示為 1 轉換成2進製 0000 1011 2 轉換成4個位元...

計算機基礎知識 原碼反碼補碼

我們知道所有資料最終都是使用二進位制數表達在計算機內表示的,假設計算機為32位作業系統那麼其內部存放的資料是 4個位元組,每個位元組佔8個二進位制位 1byte 8bit 計算機內的負數是以其正值的補碼形式表達的 假設0x 0b其機器內表示為 1 轉換成2進製 0000 1011 2 轉換成4個位元...

計算機基礎 原碼 補碼 反碼

最近工作中用到了,補碼的概念,發現這些概念腦子裡全糊了 翻出書簡單複習一下,歸納如下 首先我們討論的都是有符號數,第一位都是符號位 正0 負1 原碼 最簡單明瞭 x 1101 x原碼 0,1101 x 1101 x原碼 1,1101 這裡注意下原碼0有兩種表示法 0原碼 0,0 0原碼 1,0 補碼...