讓我細細捋一捋原碼反碼補碼以及計算機中負數的表示

弄懂任何問題均需搞清楚來龍去脈,這樣大腦才更清晰,問題理解得更透徹!

1.計算機中處理的數據分爲數值型數據和非數值型數據兩大類

數值型數據是指能進行算術運算(加、減、乘、除四則運算)的數據,即通常所說的具有大小的“數”;非數值型數據是指文字、圖像等不能進行算術運算的數據。這裏我們重點討論數值型數據(簡稱爲數值)。數值在計算機內的表示,設計到數值的大小、符號、以及小數點的表示等問題。二進制數只有0和1兩個基本符號,需要用這兩個符號的不同組合來表示不同的數。

2.無符號數和有符號數(我們這裏只討論有符號數)

有符號數的"+"、"-"號機器無法識別,但是“正”、“負”恰好是兩種截然不同的狀態,如果用“0”表示“正”,用“1”表示“負”,這樣符號也被數字化了。如

十進制 二進制真值 機器數
+94 +1011110 01011110
-49 -0110001 10110001

把符號“數字化”的數稱爲機器數,而把帶“+”或“-”符號的數稱爲真值。

接下來又有些問題需要考慮,在運算過程中,符號位能否和數值部分一起參加運算?如果參加運算,符號位又需作哪些處理?這些問題鬥魚符號位和數值位所構成的編碼有關,這些編碼就是原碼、補碼、反碼和移碼。

3.原碼

原碼錶示簡單明瞭,並易於和真值轉換。但用原碼進行加減運算時,卻帶來了許多麻煩。例如,當兩個操作數符號不同且要作加法運算時,先要判斷兩數絕對值大小,然後將絕對值大的數減去絕對值小的數,結果的符號以絕對值大的數爲準。運算步驟既複雜又費時,而且本來是加法運算卻要用減法器實現。那麼能否在計算機中只設加法器,只作加法操作呢?如果能找到一個與負數等價的正數來代替該負數,就可把減法操作用加法代替。而機器數採用補碼時,就能滿足此要求。

4.補碼

計算機辨別”符號位”顯然會讓計算機的基礎電路設計變得十分複雜! 於是人們想出了將符號位也參與運算的方法,即採用補碼。將補數的概念用到計算機中,便出現了補碼這種機器數。引入補碼的概念是爲了消除減法運算,但是形成補碼的過程中又出現了減法。如

x=-1011

[x]補= 2^(4+1)+ x = 100000 - 1011=1,0101

但是“由原碼除符號位外,每位求反,末位加1,求補碼”就可避免減法運算啦。

補碼的出現還避免了原碼中有“+0”、“-0”,雖然人們理解上+0和-0是一樣的, 但是0帶符號是沒有任何意義的。而且會有[0000 0000]原和[1000 0000]原兩個編碼表示0。-0的補碼與+0相同均爲[0000 0000]補 所以補碼能比原碼和反碼多表示一個負數即-128, 而-128並沒有原碼和反碼錶示。

5.反碼

反碼通常用來作爲原碼求補碼或者補碼求原碼的中間過渡。

6.移碼

7.補碼爲什麼會比原碼和反碼多表示一個數?

首先看一個實例:

設機器數字長爲8位(其中1位爲符號位),對於整數,當其分別代表原碼、補碼和反碼時,對應的真值範圍各爲多少?

8位寄存器中所有二進制代碼組合與原碼、補碼和反碼所代表的真值的對應關係
二進制代碼 原碼對應的真值 補碼對應的真值 反碼對應的真值 -
00000000

+0

+0

+0

-
00000001

+1

+1

+1

-
00000010

+2

+2

+2

-

.

.

.

.

.

.

.

.

.

.

.

.

-
01111110

+126

+126

+126

-
01111111

+127

+127

+127

-
10000000

-0

-128

-127

-
10000001

-1

-127

-126

-
10000010

-2

-126

-125

-

.

.

.

.

.

.

.

.

.

.

.

.

-

11111101

-125

-3

-2

-
11111110

-126

-2

-1

-
11111111

-127

-1

-0

-
二進制代碼——>原碼沒有什麼疑問,原碼——>反碼也沒有什麼疑問
原碼反碼中都有“+0”、“-0”
但是爲什麼補碼比反碼多表示一個負數?
首先注意補碼只對負數有影響,然後我們再想補碼就是在反碼的基礎上末尾加1,那麼從表中就可以清楚看到,反碼中負數部分對應的真值依次循環下移,即從-0~-127依次循環下移,當然-0一道最頂端,由補碼+0處可看到對應的重合,那麼-127下移,會多出來一位那麼它就用來表示-128了。
9.補碼爲什麼能將減法運算變成加法運算?
補碼其實與寄存器的算術溢出有關(對應了模運算,同餘)
發佈了9 篇原創文章 · 獲贊 70 · 訪問量 79萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章