減算器

減算器とは、ある2進数から別の2進数を引く論理回路です。

例えば、4ビットの減算器は、4個の全加算器と4個のNOTゲートを使って、以下のように実現できます。

このとき、2進数___B_[[3]]B_[[2]]B_[[1]]B_[[0]]__は、NOTゲートにより、ビットNOTされてから全加算器に入力されます。さらに、一番左の全加算器の___C_[in]]__が1なので、1が加算されます。これらにより、全加算器には、___B_[[3]]B_[[2]]B_[[1]]B_[[0]]__の2の補数が入力されていることになります。

よって、上記の減算器では、以下の2進数の計算が行われます。つまり、減算器では、補数による引き算が行われます。

___A_[[3]]A_[[2]]A_[[1]]A_[[0]]__+___B_[[3]]B_[[2]]B_[[1]]B_[[0]]__の2の補数=___S_[[3]]S_[[2]]S_[[1]]S_[[0]]__

なお、減算器の入力を符号なしの2進数として扱う場合、4ビットの減算器であれば、___A_[[3]]A_[[2]]A_[[1]]A_[[0]]_____B_[[3]]B_[[2]]B_[[1]]B_[[0]]__の値の範囲は、0~15になります。

一方、減算器の入力を符号ビット付き2進数として扱う場合は、___B_[[3]]B_[[2]]B_[[1]]B_[[0]]__の符号が反転した加算器になります。

減算器におけるCビットの挙動

減算器の入力を符号なしの2進数として扱う場合、減算器による計算の結果、答えがマイナス値のとき、減算器のCビットは、0になります。

例えば、4ビットの減算器では、2-5=ー3は、以下のように5ビット目に桁上がりしないため、減算器のCビットが0になります。

10進数 2進数
2
-5
=-3
0010
+1011
=1101

また、見方を変えると、Cビットが0のとき、2-5を桁借りで計算しているとも言えます。この場合は、5ビット目から桁借りすると、2は、18になります。よって、18-5=13です。13を2進数にすると、1101なので、上記の表の結果と一致します。

一方、減算器による計算の結果、答えがマイナス値ではないとき、減算器のCビットは、1になります。

例えば、4ビットの減算器において、以下の例では、5ビット目に桁上がりするため、減算器のCビットが1になります。

10進数 2進数
5
-2
=3
0101
+1110
=10011
10進数 2進数
5
-0
=5
0101
+10000
=10101
10進数 2進数
2
-2
=0
0010
+1110
=10000

そして、これらの場合は、桁借りが必要のない計算です。

このように、Cビットを見ることにより、減算器による計算の結果がただの2進数(プラス値)なのか2の補数(マイナス値)なのかを判定できます。もしくは、桁借りしているかしていないかを判定できます。

なお、減算器で符号ビット付き2進数を利用する場合は、符号ビットより上の桁にはビットは存在しないので、Cビットは無視します。