はじめに
どうも! みなため(@MinatameT)です。
今回は、NAND回路(NAND演算)の真理値表を表示するプログラムを紹介します。
条件文を用いる方法と、ビット演算子で計算する方法の2つのやり方を紹介します。
条件文バージョン
配列、掛け算、割り算を使わずに、ループ文と条件文でその都度判定させていきます。
決してスマートな方法ではありませんが、わかりやすい方法だと思います。他にもやり方はありますので、これは解答例の1つだと認識してください。
ソースコード
#include<stdio.h>
int main(void)
{
int a,b,x;
printf("NAND回路の真理値表(入力:A、B 出力:X)\n");
printf("A B X\n");
printf("------\n");
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
if(a==1 && b==1) //aもbも1のとき
{
x = 0;
}
else //上記の条件を満たさなければ
{
x = 1;
}
printf("%d %d %d\n",a,b,x);
}
}
return(0);
}
2重ループ(for文)がありますが、これによって以下の順番で出力できます。
- A = 0、B = 0のとき
- A = 0、B = 1のとき
- A = 1、B = 0のとき
- A = 1、B = 1のとき
それでは、実行結果を確認していきます。
実行結果
NAND回路の真理値表(入力:A、B 出力:X)
A B X
------
0 0 1
0 1 1
1 0 1
1 1 0
NAND回路の真理値表が正しく表示されていますね!
ビット演算子バージョン
こちらの方法では「&」と「!」を用いて、スマートにNAND演算をしています。
ソースコード
#include<stdio.h>
int main(void)
{
int a,b,x;
printf("NAND回路の真理値表(入力:A、B 出力:X)\n");
printf("A B X\n");
printf("------\n");
for(a=0; a<=1; a=a+1)
{
for(b=0; b<=1; b=b+1)
{
x = !(a & b); //NAND演算(a & bの結果を!で否定。)
printf("%d %d %d\n",a,b,x);
}
}
return(0);
}
実行結果
NAND回路の真理値表(入力:A、B 出力:X)
A B X
------
0 0 1
0 1 1
1 0 1
1 1 0
NAND回路の真理値表が正しく表示されていますね!
なお、NOR回路の真理値表の表示方法は、以下の記事で紹介してあります。
今回はここまでです。皆さん、お疲れ様でした。