計算機基礎 原碼 補碼 反碼

2021-06-28 06:00:08 字數 2262 閱讀 8130

最近工作中用到了,補碼的概念,發現這些概念腦子裡全糊了

翻出書簡單複習一下,歸納如下:

首先我們討論的都是有符號數,第一位都是符號位 正0 負1

原碼:最簡單明瞭

x=+1101    [x原碼]=0,1101

x=-1101     [x原碼]=1,1101

這裡注意下原碼0有兩種表示法

+0原碼:0,0

-0原碼:1,0

補碼:

為什麼要有補碼呢:

因為原碼再做加減運算的時候,如果兩個數符號不同,要先判斷兩個數絕對值大小,然後將絕對值大的數減去絕對值小的數

結果的符號以絕對值大的數字準。

所以要找乙個與負數等價的正數來代替負數,就可以把減法計算用加法代替

於是出現了補碼。這個補數的概念一定要理解

乙個例子:

那麼上面的例子是對於12進製,我們來看看2進製是怎麼算補碼:

①:對於原碼是正數的情況,補碼等於原碼。

②:原碼為負數求補碼,那麼首先得用到它的模,直接讓此數加上模就可以得到它的對應的正數。

那模等於什麼呢?

對於二進位制數來說,有分整數和小數

比如+11十進位制為+3;

比如+0.11十進位制為+0.75:

整數的模是2的n次冪,n為包含符號位的個數;

例子:求-1101的補碼:

模是2的5次方:100000

補碼為:x+模=-1101+100000=10011,第一位為符號位,所以結果為-

小數的模為2

例子:求-0.0110的補碼:

補碼為:x+模 = -0.0110+10.0000=1.1010第一位為符號位,所以結果為-

這種方法求補碼有點麻煩,但是要明白計算

比較快的得出補碼是如下口訣

(這裡要注意,以上求補碼的方法都是對於負數來說的,對於正數,補碼就等於原碼)

用這個方法再求剛才的例子:

例子:求-1101的補碼:

第一步要先求出原碼:

原碼:1,1101

補碼用以上口訣:1,0011

例子:求-0.0110的補碼:

原碼為:1.0110

補碼為:1.1010

這裡還要注意:

對於補碼要注意0只有一種表示

那補碼多出來的1.0表示什麼呢?

我們看第一位是符號位說明是個負數,但是上面也說了-0的補碼和+0都是0.0

那我們來看看,對於-1,求它的補碼是什麼

[x]+模=-1.0+10.0=1.0

所以說1.0表示的是-1

可以理解成1.0表示小數補碼的最小值-1(我們這裡將-1作為小數)

同理對於補碼1,00(注意這裡是討論整數,分割用的是逗號,說明這不是乙個小數)

它表示的是-4(-100)

證:-100+1000=100(第一位作為符號位:1,00)

所以我們可以類推:

1,0 表示 -2

1,00表示 -4

1,000表示 -8

歸類如下:

對於補碼如果第一位符號位是1,後面全是0的情況

如果是小數,及1.0 表示 -1

如果是整數,及1,0 或者 1,00 或者 1,000 。。。。。表示 負的 2 的n次方(n表示0的個數)

3.反碼:

反碼只需要記住一句話:

如果原碼為正數,反碼等於原碼,如果原碼為負數,反碼為原碼基礎上除了符號位,每位取反:

x=+0.0110時,原碼為0.0110,反碼為0.0110(正數)

x=-0.0110時,原碼為1.0110,反碼為1.1001(負數)

我們還要注意到 對於反碼 0有兩種表示方式

我們來歸納一下:

計算機 原碼 反碼 補碼

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

計算機原碼, 反碼, 補碼

乙個數在計算機中的二進位制表示形式,叫做這個數的機器數。機器數是帶符號的,在計算機用乙個數的最高位存放符號,正數為0,負數為1.因為第一位是符號位,所以機器數的形式值就不等於真正的數值。例如上面的有符號數 10000011,其最高位1代表負,其真正數值是 3 而不是形式值131 10000011轉換...

計算機原碼,反碼,補碼

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