タブログ

ためになるを見つけよう

半加算器と全加算器について

どうも文系出身の新人SEです。

アウトプットが重要と言うことを学んだので、書いていきたいと思います。

 

SEは基本持っている「基本情報技術者試験」の勉強をしています。友人は会社に入る前に資格取得を義務付けられているところが多い印象。私の会社では、取得が義務ずけられてはいないので、自分で勉強しようと言うわけであります。

IT業界で働くにあたり、知っておくべき知識がたくさん学べます。まだ研修中の身分なので、仕事で使うか使わないかはわかりましぇん。

 

今回は、勉強中少し引っかかった「半加算器」「全加算器」について記録を残しておこうと思います。まちがえて理解している可能性大ですので、もし気づいたことがあったら指摘お願いします。

 

 

前提知識として、コンピューター内部(普通見ることはない)では2進数で表現されています。その2進数を足す行為を行うのが、「半加算器」「全加算器」です。

 

 この参考書を使っているのですが、そこでは

「半加算器」・・・下位からの桁上がりを考慮しない加算器

「全加算器」・・・それも考慮する加算器

 と言うように書いてあります。。。

 

 

 

なやねんそれ!!!

 

 

 

ってなりますよね。

 

 

 

 

まず、2進数のたし算は、

 

0 + 0 = 00

1 + 0 = 01

0 + 1 = 01

1 + 1 = 10

 の四つしかありません。

 

a + b =x y これらの計算を一度左記のように置き換えたいと思います。

 

「半加算器」は上記の計算を行ってくれるものです。a = 0 b = 0 の時、x = 0 かつy = 0になるような計算をしてくれれば良いのです。

 

xについて見てみます。

a b x

0 0 0

1 0 0

0 1 0

1 1 1

このような計算結果になってくれればいいですよね?

これはAND回路の結果と同じです。

AND回路とは両方が1の時のみ1を返す回路の事。

 

次にyをみてみます。

a b y

0 0 0

1 0 1

0 1 1

1 1 0

yの結果はこうなってほしいです。これは、EOR回路の結果と同じです。

EOR回路とは、片方が1の場合のみ1を返す回路の事。

 

最初に書いた計算の中身がわかったでしょうか。

「半加算器」の中身は、AND回路とEOR回路で出来上がっていた、と言うことがわかります。

 

続いて、「全加算器」についてお話ししたいと思います。

2桁以上の2進数を半加算器のみで計算することができません。以下の例をご覧ください。

 

計算式)11 + 11 = 110 

 

筆算) 11

   +11

   110 

 

筆算の場合、まず一桁めの1+1=10を計算します。これは「半加算器」で計算が可能です。

しかしお気づきかと思いますが、2桁めに1桁目の計算結果である1が繰り上がっているために、2桁目では1+1+1 =11 と言う計算をする必要があります。

これでは、「半加算器」で計算することができません。

 

そこで登場するのが、繰り上がりをもものともしない「全加算器」の登場です。

 

わかりやすくするために、先ほどの筆算に記号を割り振ってみます。

 

  11(ab)

+11(cd)

      110

 

筆算のはじめは1桁目からでしたね。ですので、「半加算器」で計算してもらいましょう。1(b)+1(d)=10(ef) と言う結果になります。そうすると、次の計算が、

1(a)+1(c)+1(e)になります。

「半加算器」と言うのは、2つの入力に対し、2つの出力しかできません。

ですので、「全加算器」と言うものが登場します!!!

 

 

b + d の結果は、efになります。

繰り上がるeは、a + c (= gh)に足す必要があります。そこで、a + c の計算結果の(gh)1桁目、hに繰り上がってきたeを足すことで、「半加算器」によって計算することができます。

 

以上が、計算結果です。このように、半加算器を組み合わせたものが内部で動いていると言うのが、「全加算器」と言うことになります。

 

参考書と見比べながらみていただければ何かヒントになると思います!!!

 

以上っ!!!