計算機補碼,為什麼要用補碼

2021-09-10 07:45:57 字數 786 閱讀 3134

在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值一併處理,不需要單獨的處理符號位而降低複雜度,使得加法和減法也可以統一處理(為什麼要用補碼,好處是什麼?)

為了表示二進位制數,如果直接用原始碼形式,需要額外的硬體(缺點)區分符號位0,1;

如果用反碼,無需硬體分辨符號位,但是0由兩種表達方式(缺點);

那麼選用補碼的話,0只有一種表達方式,而且比別的表達方式多表達乙個數(優點)

十進位制原碼反碼

補碼轉換

+3011

011011

原=反=補

+2010

010010

原=反=補

+1001

001001

原=反=補

+0000

000000

原=反=補

-0100

111(1)000此處進製捨去

補=反+1(符號不變)

-1101

110111

-2110

101110

-3111

100101

-4沒法表示

沒法表示

100備註

可以表示-4

用補碼計算3-2,那就用(+)3的補碼加上(-2)的補碼

也就是011+110=(1)001 //進製要捨去,這樣減法也可以用加法來運算,不用判斷符號位;

計算1-3:

=110 (-2)

為什麼要用補碼

在探求為何機器要使用補碼之前,讓我們先了解原碼,反碼和補碼的概念.對於乙個數,計算機要使用一定的編碼方式進行儲存.原碼,反碼,補碼是機器儲存乙個具體數字的編碼方式.原碼就是符號位加上真值的絕對值,即用第一位表示符號,其餘位表示值.比如如果是8位二進位制 1 原 0000 0001 1 原 1000 ...

為什麼要用補碼?

我們都知道計算機中的負數是用補碼來表示的,而負數的補碼是原碼符號位不變,其他位按位取反再加一。但是為什麼必須這樣?為什麼非要取反再 1?這個定義是怎麼來的?首先我們用我們熟悉的十進位制來思考問題,假設現在我們只考慮兩位數字的運算,比如56 28 56 28,這裡如果作正常的減法運算,就需要借位,也就...

為什麼計算機用補碼運算

使用補碼,可以將符號位和數值域統一處理,從而簡化運算規則 簡化運算器的結構,提高運算速度 使減法運算轉換為加法運算,進一步簡化計算機中運算器的電路設計 兩個用補碼表示的數相加時,如果最高位 符號位 有進製,則進製被捨棄,而這樣計算仍然正確 採用補碼表示還有另外乙個原因,那就是為了防止0機器數有兩個編...