知恵袋で、3ビット対3ビットの加減算回路の質問があがってた。丹念に説明したつもりで、本人もわかったという回答あったが、あっさり削除。今後利用するかもしれないので、足跡をここに残す。
-----------------------
EXORは、排他的論理和ゲート。早い話、SUB信号が0なら、B(2:0)はそのまま加算器に加えられる。SUB信号が1なら、B(2:0)は全ビット論理反転。これを1の補数という。全加算器は、左が上位。右端がLSB。ここでC0に相当する場所にSUBがはいっているのに注意。 二進数では、二の補数形式のデータは、単純加算することで、引き算ができる(最上位ビットが正負判断するビットであるのを留意しないといけないから多少の差異はある)。1の補数にしてさらに1を加えると2の補数にできる。つまりSUB信号が1になると、exorで1の補数にして、さらに最下位キャリーインに1をくわえて二の補数の引き算を行う回路。C3の繰り上がりはちょっと考える。加算であれば、繰り上がり(4ビットの数)。減算の場合、0なら3ビットの負の数の2の補数(C3の反転をサインビットと考えればok)。C3の判断が煩わしいので、普通は、全加算器を2ヶ追加(実はこの問題ならハーフアダー2ヶでも良い)。それぞれサインビットの入力とする。A()は正の数固定なので、0入力(だからハーフアダーでも可)。もう一方の入力は、SUB(サインビット)と、C3をいれる。S5がサインビット(加減算に関わらないでサインビット)。S4は加算で生じる繰り上がり(負の数ー負の数がないので、繰り上がりがあるのは、加算の時だけ)。勉強すると、1ビット拡張で、C4の結果とS4で判断できるけれど、ややこしくなるので省略。暇に任せて考えなさい。余談:サインビットは、データ0に対して、0の正の数扱い。0の扱いがあるので、同一ビット数で表せる |負の最少(最大)|>|正の最大|
オリジナル回路は消されたので、似たような4ビット回路図を借用。
PR