減算器とは、ある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]]__の符号が反転した加算器になります。
減算器の入力を符号なしの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ビットは無視します。