Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

ハーフアダー(ハーフアダー)とは | 意味や読み方など丁寧でわかりやすい用語解説

ハーフアダー(ハーフアダー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

半加算器 (ハンカサンキ)

英語表記

half adder (ハーフアダー)

用語解説

ハーフアダーは、デジタル回路における最も基本的な算術演算回路の一つであり、二進数の1桁加算を実行するために使用される論理回路である。コンピュータの内部で行われるあらゆる計算の基礎を成す要素であり、システムエンジニアを目指す上で理解しておくべき重要な概念である。

概要 ハーフアダーは、2つの2進数入力(通常はAとBと呼ばれる1ビットの数値)を受け取り、それらを加算して2つの出力、すなわち「和(Sum)」と「桁上げ(Carry)」を生成する。出力の和は加算結果の最下位ビットを表し、桁上げは上位の桁に伝播する繰り上がりを表す。この回路が「ハーフ(半分)」と呼ばれるのは、上位の桁からの桁上げ入力(Carry-in)を処理する機能を持たないためである。つまり、最も下位の桁の加算には使用できるが、複数桁の加算の途中の桁では、前の桁からの桁上げを考慮できないため単独では利用できないという特徴を持つ。しかし、より複雑な加算器を構成するための基本的なビルディングブロックとして非常に重要な役割を担っている。

詳細 ハーフアダーの機能を理解するためには、まず二進数における1桁の加算ルールを把握する必要がある。二進数では、0と1のみを用いて数値を表現し、加算は以下の4つのパターンで行われる。

  1. 入力Aが0、入力Bが0の場合: 0 + 0 = 0 (和)、0 (桁上げ)
  2. 入力Aが0、入力Bが1の場合: 0 + 1 = 1 (和)、0 (桁上げ)
  3. 入力Aが1、入力Bが0の場合: 1 + 0 = 1 (和)、0 (桁上げ)
  4. 入力Aが1、入力Bが1の場合: 1 + 1 = 10 (二進数) となり、これは 0 (和)、1 (桁上げ) を意味する。

ハーフアダーは、この4つの加算パターンに基づいて、2つの入力AとBから正しい和(Sum)と桁上げ(Carry)を同時に出力するように設計される。

ハーフアダーの内部は、一般的に2つの基本的な論理ゲート、すなわち排他的論理和(XOR)ゲートと論理積(AND)ゲートによって構成される。

まず、「和(Sum)」の出力について考える。上記の加算パターンを見ると、和が1になるのは、入力Aと入力Bが異なる場合(0+1または1+0)のみである。入力Aと入力Bが同じ場合(0+0または1+1)には和が0になる。この挙動は、排他的論理和(XOR)ゲートの特性と完全に一致する。XORゲートは、2つの入力が異なる場合にのみ真(1)を出力し、同じ場合には偽(0)を出力する論理ゲートである。したがって、ハーフアダーのSum出力は、入力AとBのXOR演算によって得られる。

次に、「桁上げ(Carry)」の出力について考える。上記の加算パターンを見ると、桁上げが1になるのは、入力Aと入力Bの両方が1の場合(1+1)のみである。それ以外の組み合わせでは桁上げは0となる。この挙動は、論理積(AND)ゲートの特性と完全に一致する。ANDゲートは、2つの入力が両方とも真(1)の場合にのみ真(1)を出力し、それ以外の場合には偽(0)を出力する論理ゲートである。したがって、ハーフアダーのCarry出力は、入力AとBのAND演算によって得られる。

このように、ハーフアダーは入力Aと入力BをXORゲートに通してSum出力を得、同時にANDゲートに通してCarry出力を得るというシンプルな構造を持つ。

ハーフアダーが「ハーフ」と呼ばれる理由は、複数桁の二進数加算の際に重要となる「桁上げ入力(Carry-in)」を処理する機能がないためである。例えば、101(5)と011(3)を加算する場面を想像してみよう。最も右の桁(最下位桁)の1と1の加算では、繰り上がり入力は存在しないためハーフアダーを使用できる。しかし、中央の桁の0と1の加算を行う際には、前の桁からの繰り上がり(この場合は1)を考慮する必要がある。ハーフアダーは2つの入力しか持たないため、この3つ目の入力である繰り上がり(Carry-in)を扱うことができない。この制約から、ハーフアダーは単独では複数桁の二進数加算には適さず、主に最下位桁の加算や、繰り上がりが発生しない単純な論理演算に限定される。

しかし、ハーフアダーはデジタル回路の基礎として非常に重要である。なぜなら、2つのハーフアダーと1つの論理和(OR)ゲートを組み合わせることで、上位の桁からの桁上げ入力も処理できるより高機能な「フルアダー」を構築できるためである。フルアダーは、3つの入力(A、B、Carry-in)を受け取り、2つの出力(Sum、Carry-out)を生成し、複数桁の二進数加算を連続して行うことを可能にする。したがって、ハーフアダーは、コンピュータの算術論理演算ユニット(ALU)など、あらゆるデジタル計算回路の根幹を成す、基本的な構成要素として不可欠な存在である。この基本的な理解は、より複雑なデジタルシステムの動作原理を解明するための出発点となる。

関連コンテンツ