計算機為什麼需要反碼,補碼?

2022-03-18 05:24:23 字數 1974 閱讀 6760

一、為什麼需要反碼?

反碼的作用就相當於數學中的負數。

對於小學生來說,會做的算術題是:5-3,但是不會做3-5。於是,我們上初中的時候,數學裡就引進了乙個新的概念:負數。引入負數之後,本來是減法的運算就可以變成加法來實現:

3-5=3+[-5]=[-2],中括號代表「負數」,「負數」就是我們人為給出的數學術語。

對於計算機來說,會做的算術題是:5+3,但是不會做3-5。於是,我們就在編碼裡引進了乙個新的概念:反碼。引入反碼之後,本來是減法的運算就可以變成加法來實現:

3-5=3+[-5]=[-2],中括號代表「反碼」,「反碼」就是我們人為給出的計算機術語。

這裡,你一定有乙個疑問:為什麼計算機只會做5+3,不會做3-5。這是因為在計算機的數位電路中只有加法器,沒有所謂的「減法器」。不是說計算機廠商不會設計減法器,因為聰明的人既然發明了方法能夠用加法來實現減法操作,那為什麼還需要畫蛇添足的弄乙個減法器?

接著說:那麼反碼要怎麼定義才能實現減法變加法的功能呢?聰明的人想的辦法如下:

1.正數反碼保持原碼不變:3=[0_0000011]

2.負數除最高位(正負符號位)外,全部取反(0變1,1變0):-5=1_0000101取反=[1_1111010]

於是3+[-5]=[-2]的計算過程為:

[0_0000011]+[1_1111010]=[1_11111101]

這樣,這種反碼方法就成功實現了目標!至於為什麼,我想只有數學家能給出解釋了。

二、為什麼需要補碼?

都是因為「0」這個特殊數字的存在。

先問你乙個問題:0是正數還是負數?你肯定會說:0既不是正數也不是負數,這是我們初中學到的數學知識。這個回答沒有問題,所以以後每次碰到0,人們都不會把它當正數或負數。

那麼計算機呢?計算機不同於人腦,計算機在碰到任何數字之前只根據最高位的符號位來判斷正負性,「0」表示正數,「1」表示負數。

前面我們推論了為何要用反碼,那麼用8位二進位制反碼表示的正數範圍: +0 —— +127;負數範圍: -127 —— -0。但是,其中有兩個特殊的編碼會出現:

[0_0000000]=+0 (反碼)

[1_1111111]=-0 (反碼)

其實,+0和-0代表的都是0。這樣一來,「0」這個數字在計算機中的編碼就不是唯一的了。對於計算機來說,這是絕對不行的,因為任何數字都只能有1個編碼。

於是,聰明的人就做了這樣乙個決定:把0當成正數,也即+0,這樣0的編碼就變成:0_0000000。那8位二進位制表示的正數範圍仍然是: +0 —— +127。

但是,對於負數就必須要做調整,也即-0必須要讓位---1_1111111這個編碼不能表示-0。我們可以把負數整體向後「挪動1位」:只要將8位二進位制表示的負數範圍從:-127 —— -0變成:-128 —— -1,就能成功解決問題。

那麼怎麼整體挪動1位呢?方法就是反碼+1。編碼就不再表示-0,而變成了-1。順著推,最小的編碼就是-128。

我們給這個反碼+1又人為的取了乙個新的名字,叫補碼。於是乎,補碼的定義如下:

1.正數補碼保持原碼不變:3=

2.負數先求反碼,然後再加1:-5=[1_1111010]+1=

於是3+=的計算過程為:

+=至此,通過補碼就成功解決了數字0在計算機中非唯一編碼的問題,且也能實現減法變加法。

所以,在計算機的世界裡,0是正數。這點和我們學的數學不一樣。

=+127 (補碼)

=+0 (補碼)

=-1 (補碼)

=-128 (補碼)

計算機反碼補碼

首先,計算機能把減法處理成加法最好,然後 2 1 2 1 即2個正數相減轉化成,加法操作。就是時鐘問題牽涉到同餘定理。對於時鐘問題膜且看成是1 12,膜為12 而在二進位制加法運算中膜有0 127,膜為128 補碼加1的關鍵在於0 很明顯如果把時鐘問題直接等效過來的計算肯定是錯的 因為在時鐘問題中的...

為什麼計算機使用補碼?原碼 反碼 補碼的關係

機器數 乙個數在計算機中的二進位制表示形式。機器數是帶符號的,最高位存放符號位,正數為0,負數為1。真值 機器數對應的真正數值。比如 機器數1000 0001 的真值是 1 原碼 原碼就是符號位加上 真值的絕對值 1 0000 0001 1 1000 0001 反碼 正數的反碼是其本身,負數的反碼是...

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

在計算機系統中,數值一律用補碼來表示和儲存。原因在於,使用補碼,可以將符號位和數值一併處理,不需要單獨的處理符號位而降低複雜度,使得加法和減法也可以統一處理 為什麼要用補碼,好處是什麼?為了表示二進位制數,如果直接用原始碼形式,需要額外的硬體 缺點 區分符號位0,1 如果用反碼,無需硬體分辨符號位,...