論理回路 

目次


第1節 二進数

第2節 二進数の加算回路

第3節 減算回路

第4節 負数と補数


テスト

Logをみる

Back
 

第5章 計算回路

    第5章 計算回路

 第2節 二進数の加算回路

 二進数同士の足し算は

 (1)+(1)=(10)

(0)+(1)=(1) (1)+(0)=(1)も

(0)+(0)=(0)

という3種の規則を知っていればできます。下(右)の桁から順に計算してゆきます。1行目の規則は桁上がりがある場合です。なお桁上がりがあった場合

 (1)+(1)+(1)=(11)

のような規則も必要ですが、これは上の3つの規則の繰り返しで導けるものでもあります。

 いずれにしても例を見ましょう。

 (010110111)
+(011101101)
---------------
     10
     10
    11
    10
   10
   11
  10
11
= (110100100)

 最後の値は上の右端の数字を並べたものです。

 これは先ほどの電卓で確かめられます。2進モードにして通常のように加算演算をすればいいのです。

 加算をする回路は桁ごとに同じ組み合わせ論理回路で実現できます。一つはその桁の値(sum)を求める回路です。もう一つは、桁上がりの値(carry)を求める回路です。

 両方とも入力は3本です。今二進数

(xn,x(n-1),...,x2,x1,x0)

と二進数

(yn,y(n-1),...,y2,y1,y0)

を足すとします。i番目の桁の加算回路はxi,yi,c(i-1)の3つを入力とします。ここにc(i-1)は i-1 桁目からの桁上がりです(桁上がりがあれば1、無ければ0)。

 和を二進数で

(z(n+1),zn,z(n-1),...,z2,z1,z0)

とします。和は最後の桁で桁上がりがあるかもしれないので、1桁多くしておきます。

 2つの数の和は真理値表にすると

 xi yi | zi
----------------
 0 0 | 0
 0 1 | 1
 1 0 | 1
 1 1 | 0

となり、これは論理学のCAIでやったように exclusive or の演算です。ここへ同じように桁上がり c(i-1) が加わりますから、結果として

  zi = xi xor yi xor c(i-1)  (1)

という式が得られます。

  また桁上がり ci については、桁が上がるのは3つの入力のうち2つ以上が1の場合ですから、

  ci = xi and yi or yi and c(i-1) or c(i-1) and xi  (2)

という式になります。

 (1)と(2)を回路にしたものを、「全加算器 full adder」といいます。xor だけの回路を「半加算器 half adder」というのに対した言葉です。次の図は全加算器を四角のブロックで表したものです。

 

 この全加算器をFA と書くことにすると、例えば 8桁(8 bit)の加算器は8個のFA を次の図のように並べます。一番下の桁へのcarry 入力は0とします。また一番上の桁は一番上の全加算器のcarry 出力をもってあてます。ここにcarry が出るようなら、結果が8桁に収まらなかったということ、すなわち「オーバーフロー overflow」が生じた、ということです。