VB.NETつつく7ー論理演算。コンピューターの論理。
論理演算って聞いた事がないという人もいるからまずそこを説明するね。
コンピュータを制御するCPUは歴史的な事情とか効率の問題で0(False)と1(True)しかわからないように作られているんだ。 ここまでの説明で「あれ?でもさっきは10+2とかやってたよ」と普通の人は考えると思う。 だけど0と1を操作すればどんな数値でも扱えるんだ。
※その方法はちょっと難しいので、今回の記事は論理演算だけを扱います。
それを実現するのが論理演算で、それはAND、OR、NOT、排他的論理和の四つがあるんだ。 じゃあ、これからそれぞれを詳しく見ていこう。
まずはOR演算から行くよ。
OR論理演算はどちらかが1(True)かどうかを調べる演算と思えばいいよ。
じゃあ実際に計算してみるね。
Imports System
Module Module1
Sub Main()
Dim flag As Boolean = False
Console.WriteLine("{0} OR {1} = {2}", flag, True, flag Or True)
Console.WriteLine("{0} OR {1} = {2}", flag, flag, flag Or flag)
End Sub
End Module
このコードを実行すれば、どちらかがTrueの場合演算結果がTrueになることが確認できたと思う。
次はAND演算をやってみよう。
AND論理演算はどちらも1(True)なのかを調べる演算と思えばいいよ。
じゃあ実際に計算してみるね。
Imports System
Module Module1
Sub Main()
Dim flag As Boolean = True
'一番最初だけ結果がTrueになる
Console.WriteLine("{0} AND {1} = {2}", flag, True, flag And True)
Console.WriteLine("{0} AND {1} = {2}", flag, False, flag And False)
flag = False
Console.WriteLine("{0} AND {1} = {2}", flag, True, flag And True)
Console.WriteLine("{0} AND {1} = {2}", flag, False, flag And False)
End Sub
End Module
OR演算よりも結果が厳しぃー。シビアな論理演算だね。
今度はNOT論理演算をしてみよう。これは単純。逆の事を言うだけだよ。
Imports System
Module Module1
Sub Main()
Dim flag As Boolean = True
Console.WriteLine("{0} のNot演算結果は{1}", flag, Not flag)
End Sub
End Module
まるで天邪鬼だね。こんなの役に立つのか?と感じた人がいるかもしれないけどそれなりに重宝するんだ。
じゃあ最後の排他的論理行ってみようー。
Imports System
Module Module1
Sub Main()
Dim flag As Boolean = True
Console.WriteLine("{0} XOR {1} = {2}", flag, True, flag Xor True)
Console.WriteLine("{0} XOR {1} = {2}", flag, False, flag Xor False)
flag = False
Console.WriteLine("{0} XOR {1} = {2}", flag, True, flag Xor True)
Console.WriteLine("{0} XOR {1} = {2}", flag, False, flag Xor False)
End Sub
End Module
実行して結果を見てみよう。ちょっと難しいけどこれは片方がTrueの時のみTrueになっているんだ。
両方Trueの場合は0(False)なんだ。変わり者だねぇー。こんな論理演算使い道あるのか?とかなり疑問に思うだろうけど、
これはバイナリ(0と1)を直接扱うプログラムに結構使うんだ。
でも初心者はそんなことしないと思うから頭の片隅においておくだけでいいピヨ。
これで論理演算は全て学習したから終わるよ。
また見てね。