二補數

二補數

二補數是一種用二進位表示有號數的方法,也是一種將數字的正負號變號的方式,常在計算機科學中使用。

二補數二補數
二補數(2'scomplement)是一種用二進位表示有號數的方法,也是一種將數字的正負號變號的方式,常在計算機科學中使用。

一個數字的二補數就是將該數字作位元反相運算(即一補數),再將結果加1,即為該數字的二補數。在二補數系統中,一個負數就是用其對應正數的二補數來表示。二補數系統的最大優點是可以在加法或減法處理中,不需因為數字的正負而使用不同的計算方式。只要一種加法電路就可以處理各種有號數加法,而且減法可以用一個數加上另一個數的二補數來表示,因此只要有加法電路及二補數電路即可完成各種有號數加法及減法,在電路設計上相當方便。

另外,二補數系統的0隻有一個表示方式,這點和一補數系統不同(在一補數系統中,0有二種表示方式),因此在判斷數字是否為0時,只較比對一個不同的條件即可。右側的表是在一些8位元二補數系統的整數。

目錄

1數字表示方式

1.1說明

1.2計算二補數

1.3特別的數字

1.4其他計算二補數的方法

1.5符號延展

2運算

2.1加法

2.2減法

2.3乘法

數字表示方式

說明

二補數十進位

01117

01106

......

00102

00011

00000

1111−1

1110−2

......

1001−7

1000−8

以下用4位元的二補數數字來說明二補數系統的數字表示方式。

在表示正數和零時,二補數數字和一般二進位一樣,唯一的不同是在二補數系統中,正數的最高位元恆為0,因此4位元的二補數正數,最大數字為0111(7)。

二補數數字的負數,最高位元恆為1,4位元二補數的數字中,最接近0的負數為1111(-1),以此類推,因此絕對值最大的負數是1000(8)。

以上的表示方式在電腦處理時格外方便,以下用以下的例子說明:

0011(3)+1111(-1)--------------10010

結果10010似乎是錯的,因為已經超過四個位元,不過若忽略掉(從左數起的)第5個位元,結果是0010(2),和我們計算的結果一樣。而且若可以將二進位的0001(1)變號為1111(-1),以上的式子也可以計算減法:3-1=2。

在n位元的二補數加減法中,忽略第n+1個位元的作法在各種有號數加法下都適用(不過在判斷是否溢位(overflow)時,仍然會用到第n+1個位元)。因此在二補數的系統,加法電路就可以處理有負數的加法,不需另外處理減法的電路。而且,只要有電路負責數字的變號(例如將1變換為-1),也可以用加法電路來處理減法。而數字的變號就用計算數字的二補數來完成。

在一般n位元的二進位數字中,最高有效位元(MSB)第n位元代表的數字為 2n−1。不過,在n位元的二補數系統中,最高有效位元(MSB)第n位元表示符號位元,若符號位元為0,數字為正數或0,若符號位元為1,數字為負數。以下是n位元的二補數系統中,幾個特別的數字:

相關詞條

相關搜尋

熱門詞條

聯絡我們