計算機原碼, 反碼, 補碼

2021-08-23 12:30:21 字數 1166 閱讀 8001

乙個數在計算機中的二進位制表示形式, 叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號, 正數為0, 負數為1.

因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 -3 而不是形式值131(10000011轉換成十進位制等於131)。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值。

原碼原碼(true form)是一種計算機中對數字的二進位制定點表示方法。原碼表示法在數值前面增加了一位符號位(即最高位為符號位):正數該位為0,負數該位為1(0有兩種表示:+0和-0),其餘位表示數值的大小。

原碼的優點

簡單直觀;例如,我們用8位二進位制表示乙個數,+11的原碼為00001011,-11的原碼就是10001011

原碼的缺點

原碼不能直接參加運算,可能會出錯。例如數學上,1+(-1)=0,而在二進位制中00000001+10000001=10000010,換算成十進位制為-2。顯然出錯了。

補碼在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。此外,補碼與原碼相互轉換,其運算過程是相同的,不需要額外的硬體電路。

補碼的特性

乙個負整數(或原碼)與其補數(或補碼)相加,和為模。

對乙個整數的補碼再求補碼,等於該整數自身。

補碼的正零與負零表示方法相同。 反碼

正數的反碼與其原碼相同;負數的反碼是對其原碼除符號位外逐位取反。

原碼原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其餘位表示值.

反碼正數的反碼是其本身

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.

補碼正數的補碼就是其本身

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 最後+1. (即在反碼的基礎上+1)

[+1] =[00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補

正數的原碼,反碼,補碼相同。

負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.

負數的補碼是在其原碼的基礎上, 符號位不變, 其餘各位取反, 末位+1.

計算機 原碼 反碼 補碼

在計算機中,用補碼來表示數字,因為 1 這樣可以比較方便的表示0 保證0作為正數或者負數補碼都是00000000 2 計算時用補碼直接加減就是最終數值 符號位參與運算 1.原碼 原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 ...

計算機原碼,反碼,補碼

最近花了點時間對計算機的原碼,反碼和補碼進行了研究,對為什麼要有反碼和補碼以及他們這麼設計的原因有了一定的理解 機器數 乙個數在計算機中的表現形式叫做機器數,這個數有正負之分,在計算機中用乙個數的最高位 符號位 用來表示它的正負,其中0表示正數,1表示負數。例如正數7,在計算機中用乙個8位的二進位制...

計算機基礎 原碼 補碼 反碼

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