一補數與二補數

計算機概論中的數字系統,由於電腦都是記錄 1 和 0 兩個數字,所以會講到進位系統的轉換。而進行複雜的運算時,都是靠補數來運算,所以也會提到一補數和二補數。

在邏輯電路中,有個東西叫加法器,但沒有所謂的乘法器和減法器,因為減乘除其實都是靠加法實現的:減法就加上補數、乘法就連加、除法就連加補數。

一補數

減法會用到所謂的一補數。先講作法:

範例:計算 -4 的一補數。

首先先將 4 以二進位表示:$0100$。

然後將每個 1 寫成 0、每個 0 寫成 1(其實就是 NOT 運算),就會得到 $1011$。

這就是一補數的作法。

所以計算 $4-3$ 時,其實就是用 4 加上 3 的補數,也就是 $0100 + 1100$ 得到 $0001$(因為只有四個位元,所以 $10000$ 溢位變成 $0001$),換成十進位的 1。

以下列出 $\pm7$ 的表示法:

原本的數 正數 負數
0 0000 1111
1 0001 1110
2 0010 1101
3 0011 1100
4 0100 1011
5 0101 1010
6 0110 1001
7 0111 1000

然而,一補數系統中,0 居然可以被表示成正零($+0$)和負零($-0$),這造成了一些問題。

二補數

所以有了二補數系統。一樣先講作法:

範例:計算 -3 的二補數。

首先先將 3 以二進位表示:$0011$。

然後先把每個 1 寫成 0、每個 0 寫成 1,得到 $1100$。(其實就是先算一次一補數)

之後再加上一個 1,得到 $1101$。

這就是二補數的作法。

二補數常用來表示有號數,第一個位元用來記錄正負號(正號表示成 0、負號表示成 1)。以下列出 $\pm3$ 的表示法

原本的數 二補數表示法
3 0011
2 0010
1 0001
0 0000
-1 1111
-2 1110
-3 1101

延伸閱讀