無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

C++/CLIをつつく7ー論理演算。0と1の演算。

前回の予告どおりこの記事では論理演算を一緒に学習しよう。
論理演算って聞いた事がないという人もいるからまずそこを説明するね。
コンピュータを制御するCPUは歴史的な事情とか効率の問題で0(False)と1(True)しかわからないように作られているんだ。 ここまでの説明で「あれ?でもさっきは10+2とかやってたよ」と普通の人は考えると思う。 だけど0と1を操作すればどんな数値でも扱えるんだ。
※その方法はちょっと難しいので、今回の記事は論理演算だけを扱います。
それを実現するのが論理演算で、それはANDORNOT排他的論理和の四つがあるんだ。 じゃあ、これからそれぞれを詳しく見ていこう。

バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

まずはOR演算から行くよ。
OR論理演算はどちらかが1(True)かどうかを調べる演算と思えばいいよ。
じゃあ実際に計算してみるね。
#include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Boolean flag = false; Console::WriteLine( "{0} OR {1} = {2}", flag, true, flag | true ); Console::WriteLine( "{0} OR {1} = {2}", flag, flag, flag | flag ); return true; }
このコードを実行すれば、どちらかがTrueの場合演算結果がTrueになることが確認できたと思う。

バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

次はAND演算をやってみよう。
AND論理演算はどちらも1(True)なのかを調べる演算と思えばいいよ。
じゃあ実際に計算してみるね。
#include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) {
    //一番最初だけ結果がTrueになる
Boolean flag = true; Console::WriteLine( "{0} AND {1} = {2}", flag, true, flag & true ); Console::WriteLine( "{0} AND {1} = {2}", flag, false, flag & false ); flag = false; Console::WriteLine( "{0} AND {1} = {2}", flag, true, flag & true ); Console::WriteLine( "{0} AND {1} = {2}", flag, false, flag & false ); return true; }
OR演算よりも結果が厳しぃー。
シビアな論理演算だね。

バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

今度はNOT論理演算をしてみよう。これは単純。逆の事を言うだけだよ。
#include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Boolean flag = true; Console::WriteLine( "{0} のNot演算結果は{1}", flag, !flag ); return true; }
まるで天邪鬼だね。こんなの役に立つのか?と感じた人がいるかもしれないけどそれなりに重宝するんだ。

バサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサバサ

じゃあ最後の排他的論理行ってみようー。
#include "stdafx.h" using namespace System; int main(array<System::String ^> ^args) { Boolean flag = true; Console::WriteLine( "{0} XOR {1} = {2}", flag, true, flag ^ true ); Console::WriteLine( "{0} XOR {1} = {2}", flag, false, flag ^ false ); flag = false; Console::WriteLine( "{0} XOR {1} = {2}", flag, true, flag ^ true ); Console::WriteLine( "{0} XOR {1} = {2}", flag, false, flag ^ false ); return true; }
実行して結果を見てみよう。ちょっと難しいけどこれは片方がTrueの時のみTrueになっているんだ。 両方Trueの場合は0(False)なんだ。変わり者だねぇー。こんな論理演算使い道あるのか?とかなり疑問に思うだろうけど、 これはバイナリ(0と1)を直接扱うプログラムに結構使うんだ。 でも初心者はそんなことしないと思うから頭の片隅においておくだけでいいピヨ。 これで論理演算は全て学習したから終わるよ。 また見てね。
別窓 | C++/CLI | コメント:0 | トラックバック:0 | ∧top | under∨
<<C++/CLIをつつく8ーメソッド(関数)。何が出来るかな?。 | 無差別に技術をついばむ鳥 | C++/CLIをつつく6ー算術演算。コンピューターは計算がお好き。>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |