開啟主選單

求真百科

來自 搜狐網 的圖片

補碼是一個科技名詞。

中國漢字的發展成為維繫中華民族歷史發展進步的一條生動鮮明的脈絡[1],各個歷史時期所形成的各種字體,有着各自鮮明的藝術特徵,如篆書[2]古樸典雅,隸書靜中有動,草書風馳電掣、結構緊湊,楷書工整秀麗,行書易識好寫,實用性強,字體多樣。

目錄

名詞解釋

計算機中的有符號數有三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示「正」,用1表示「負」,而數值位,三種表示方法各不相同。在計算機系統中,數值一律用補碼來表示和存儲。原因在於,使用補碼,可以將符號位和數值域統一處理;同時,加法和減法也可以統一處理。

在介紹補碼概念之前,先介紹一下「模」的概念:「模」是指一個計量系統的計數範圍,如過去計量糧食用的斗、時鐘等。計算機也可以看成一個計量機器,因為計算機的字長是定長的,即存儲和處理的位數是有限的,因此它也有一個計量範圍,即都存在一個「模」。如:時鐘的計量範圍是0~11,模=12。表示n位的計算機計量範圍是

,模=

.「模」實質上是計量器產生「溢出」的量,它的值在計量器上表示不出來,計量器上只能表示出模的餘數。任何有模的計量器,均可化減法為加法運算 。

就是取反後加1。

假設當前時針指向8點,而準確時間是6點,調整時間可有以下兩種撥法:一種是倒撥2小時,即8-2=6;另一種是順撥10小時,8+10=12+6=6,即8-2=8+10=8+12-2(mod 12).在12為模的系統里,加10和減2效果是一樣的,因此凡是減2運算,都可以用加10來代替。若用一般公式可表示為:a-b=a-b+mod=a+mod-b。對「模」而言,2和10互為補數。實際上,以12為模的系統中,11和1,8和4,9和3,7和5,6和6都有這個特性,共同的特點是兩者相加等於模。對於計算機,其概念和方法完全一樣。n位計算機,設n=8,所能表示的最大數是11111111,若再加1成100000000(9位),但因只有8位,最高位1自然丟失(相當於丟失一個模)。又回到了 00000000,所以8位二進制系統的模為

。在這樣的系統中減法問題也可以化成加法問題,只需把減數用相應的補數表示就可以了。把補數用到計算機對數的處理上,就是補碼。

原碼求補碼

求給定數值的補碼分以下兩種情況:

正數

正整數的補碼是其二進制表示,與原碼相同。

例:+9的補碼是00001001。(備註:這個+9的補碼是用8位2進制來表示的,補碼表示方式很多,還有16位二進制補碼表示形式,以及32位二進制補碼表示形式,64位進制補碼表示形式等。每一種補碼表示形式都只能表示有限的數字。)

負數

求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1。

同一個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進制中是11110001,然而在16位二進制補碼表示中,就是1111111111110001。以下都使用8位2進制來表示。

例:求-5的補碼。

-5對應帶符號位負數5(10000101)→除符號位外所有位取反(11111010)→加 00000001為 (11111011)

所以-5的補碼是11111011。

0的補碼

數0的補碼表示是唯一的。

[+0]補=[+0]反=[+0]原=00000000

[ -0]補=11111111+1=00000000

補碼求原碼

已知一個數的補碼,求原碼的操作其實就是對該補碼再求補碼:

⑴如果補碼的符號位為「0」,表示是一個正數,其原碼就是補碼。

⑵如果補碼的符號位為「1」,表示是一個負數,那麼求給定的這個補碼的補碼就是要求的原碼。

例:已知一個補碼為11111001,則原碼是10000111(-7)。

解:因為符號位為「1」,表示是一個負數,所以該位不變,仍為「1」。

其餘七位1111001取反後為0000110;再加1,所以是10000111。

特點

補碼具有如下特點:

1. 最高位為符號位,為0表示這個數是正數,為1表示這個數是負數。

2. 對於正數,[X]補=[X]原,即正數的補碼與原碼相同,且能表示的數值範圍也相同。

3. 對於負數,補碼的值等於模減去該數的絕對值,負數的補碼等於該數的反碼加1。

4. 對於零,設n=8,則[+0]補=00000000,[-0]補=00000000,0的表示是唯一的,解決了+0和-0的表示問題。

5. 使用補碼表示,可以將真值的減法運算變為機器中的加法運算,從而使CPU內部不再需要設計減法器,簡化了CPU的設計。

意義

補碼「模」概念的引入、負數補碼的實質、以及補碼和真值之間的關系所揭示的補碼符號位所具有的數學特徵,無不體現了補碼在計算機中表示數值型數據的優勢,和原碼、反碼等相比可表現在如下方面:

(1)解決了符號的表示的問題;

(2)可以將減法運算轉化為補碼的加法運算來實現,克服了原碼加減法運算繁雜的弊端,可有效簡化運算器的設計;

(3)在計算機中,利用電子器件的特點實現補碼和真值、原碼之間的相互轉換,非常容易;

(4)補碼表示統一了符號位和數值位,使得符號位可以和數值位一起直接參與運算,這也為後面設計乘法器除法器等運算器件提供了極大的方便。總之,補碼概念的引入和當時運算器設計的背景不無關係,從設計者角度,既要考慮表示的數的類型(小數、整數、實數和複數)、數值範圍和精確度,又要考慮數據存儲和處理所需要的硬件代價。因此,使用補碼來表示機器數並得到廣泛的應用,也就不難理解了。

參考文獻