ちょっとディープな生物の世界

基本情報技術者:論理演算と論理回路とは

論理演算と論理回路

コンピュータは1と0の2つの値で計算を行っています。これを論理演算と呼びます。OR、AND、NOTなどが代表的な論理演算です。

論理演算を実際に行う回路を論理回路と呼びます。CPUには論理演算を行う回路が組み込まれています。論理回路はMIL記号で図式化し、真理値表で表現したりします。

基本回路とは

論理和回路(OR回路)、論理積回路(AND回路)、否定回路(NOT回路)の3つを基本回路と呼びます。

論理和回路

入力の一方が1であれば、出力は1になります。

論理積回路

入力の両方が1であれば、出力は1になります。

否定回路

入力が1であれば出力は0、入力が0であれば出力は1になります。

基本回路の組み合わせ

基本回路を組み合わせて作成された回路として、排他的論理和回路(EOR回路)、否定論理和回路(NOR回路)、否定論理積回路(NAND回路)などがあります。

排他的論理和回路

入力が異なれば、出力は1になります。

否定論理和回路

どちらも入力が0のとき、出力が1になります。NOT(A OR B)の意味です。

否定論理積回路

両方の入力がどちらも1以外の時、出力が1になります。NOT(A AND B)の意味です。AND回路の否定と考えておけば良いでしょう。

ビット演算とは

ビット列と特定のビット列を演算させることで、特定のビットを取り出すことができます。この演算させる特定のビット列のことをマスクパターンと呼びます。

ビットの取り出し

例えば次のようなビット列があったとしましょう。

00110001

マスクパターンとして00001111を用意し、論理積(AND)をとります。

00110001

00001111

すると下位4ビットのみを取り出すことができました。このようにある特定のビットを取り出すには、1でANDをとれば実行することができます。

00000001

ビットの反転

特定のビットを反転させるのには、1でEORをとれば実行することができます。

00110001

00001111

EORをとってみると次のようになります。

00111110

下位4ビットのみ反転させることができました。

半加算器と全加算器

論理和の組み合わせで加算を行うことができます。2進数の加算を行う回路を加算器と呼びます。

半加算器

半加算器は単純に1桁の2進数の足し算です。真理値表に表すと次のようになります。XとYを加算する数、Sを出力する数の1桁目、Cを出力する数の2桁目とします。

入力入力出力出力
XYCS
0000
0101
1001
1110

CはXとYが両方1の時に1となるため、論理積(AND)であることがわかります。SはXとYが異なる値の時のみ1となるため、排他的論理和(XOR)であることがわかります。

論理回路のみで1桁の数の加算を表現することができました。

半加算器は2つの入力を加算して、演算結果の下位桁と桁上がりの数値を出力する回路です。

全加算器

全加算器は、3桁の数を加算する際に使います。例えば、11+11=110ですが、これを論理積で表現するにはどうすれば良いでしょうか。

1桁目は、半加算器を使えば計算できます。2桁目は、1桁目を計算した時に生じる桁上がりを考慮しなければなりません。桁上がりをC’として、真理値表で表現すると次のようになります。

入力入力入力(桁上がり)出力(3桁目)出力(2桁目)
XYC’CS
00000
01001
10001
00101
01110
10110
11111

C1桁目を半加算器で計算することによって得ることができます。

wikiからもってきた下図ではXがA、YがB、C’がXとなっていますが、少し説明したいと思います。

Cの値は、XとYを半加算器によって計算し、さらにその値の1桁目をC’と半加算器で計算して2桁目Cを取得し、初めに得られたCの値とORをとることで得られます。また、ここで得られた1桁目Sはそのまま値として出力します。

全加算器は半加算器を2つ組み合わせることによって、下位からの桁上がりと上位への桁上がりを実装した回路です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です