ド・モルガンの法則を実証してみた
ド・モルガンの法則はAとBの値がある場合「AとBをOR演算して反転した値は、AとBそれぞれを反転してAND演算した値と等しい」というものです。
これをC言語で表すと以下になります。
これをC言語で表すと以下になります。
!(a || b) == (!a && !b)
また、ORとANDを入れ替えて以下も成立します。
!(a && b) == (!a || !b)
つまり「AとBをAND演算して反転した値は、AとBそれぞれを反転してOR演算した値と等しい」とも言えます。
そこで実際に法則通りの結果となるか、以下のC言語のプログラムで実証してみました。
void getMorgan1(int a, int b) {
int result;
result = (!(a || b) == (!a && !b));
printf("%d %d %s\n", a, b, (result ? "true" : "false"));
}
void getMorgan2(int a, int b) {
int result;
result = (!(a && b) == (!a || !b));
printf("%d %d %s\n", a, b, (result ? "true" : "false"));
}
void main() {
getMorgan1(0, 0);
getMorgan1(0, 1);
getMorgan1(1, 0);
getMorgan1(1, 1);
printf("-------------\n");
getMorgan2(0, 0);
getMorgan2(0, 1);
getMorgan2(1, 0);
getMorgan2(1, 1);
}
結果:
0 0 true
0 1 true
1 0 true
1 1 true
-------------
0 0 true
0 1 true
1 0 true
1 1 true
この法則はどちらの書き方が良いかではなく、論理演算式の変換をする際に役に立ちます。
公開日:2019年03月24日