【学生起業家】Hoicos愛用のプログラミング言語|プログラミング教室で使っている言語の紹介
みなさん排他的論理和と言う言葉を知っていますか?私は大学生になって初めて知りました。まだまだ知らない計算方法や計算記号があるものです。
和と書いてあるので足し算なのですが、少し変わった足し算の仕方をします。
今回は排他的論理和について少し学び、Scratchで同じ計算ができるプログラムを作ろうと思います。
排他的論理和で使用される数字は、「0」「1」の2種類だけです。0と1だけときいてピンと来た方もいるかと思います。そうです、排他的論理和は電気系の分野で使われる演算です。
まず、排他的論理和の演算子は下の写真のような物になります。
このように円とプラスの記号が合体したような形をしています。なんかのシンボルマークみたいですね。。
この演算子はパソコンで打てないので、ここからは+を排他的論理和の代わりにして説明していきます。
次に気になるのが計算方法ですね。意外と簡単です。
0+0=0
0+1=1
1+0=1
1+1=0
このような計算方法になります。ここの+は排他的論理和の演算子の代わりで用いているので普通のプラスではないことに注意してください。
な〜んだ四則演算のプラスと変わらないじゃないかと思いきや、最後
1+1=0
と言う意味不明な計算になっていますね。
排他的論理和は同じ物同士を足すときは0に、違う物同士を足す時は1になるような演算子です。
この排他的論理和はいくつでしょう。
1+0+0+1+0+1+0+0+0+0+1
これの答えは0です。
頭から順番に計算していけば最後1+1となり答えは0になるはずです。
情報を送信するとき私たちの情報は符号化されて送信されています。情報を送信する時には色々なノイズが入り、必ず元の情報が正確に伝わるとは限りません。そこで情報を符号化することでノイズが入ってもその影響を受けにくくするのです。しかし、符号化してもノイズによって情報が間違って伝わってしまうこともあります。受け手は送信された情報が本物かどうか確認する術がないですね。
信頼できる情報にするには送信された符号化された情報を正しいかどうか確認できる方程式を作らないといけないです。そこで作られたのがパリティ検査方程式というものです。簡単に説明できる方程式でないので詳細は省きますが、この方程式に排他的論理和が使われています。これによって受け手はこの方程式の答えが0だったら正しい、1だったら間違った情報だと認識できるようになったのです。先ほど説明したように排他的論理和は0と1しか出てきません。ですので、とっても簡単に間違っているかどうか確認ができます。実際のところ間違っているかどうかだけでなく、どこの部分が間違っているかまでわかるのでこの排他的論理和はこの分野で大活躍しています。
今回はリストであらかじめ作成してある0と1の羅列を排他的論理和で計算してみるプログラムを作りました。
これの答えを手計算すると0になりますね。
え〜複雑ですね。
頭から一つ一つ足していく方式をとっています。「ANSWER」という箱にリストの1番目の数字を入れます。今回は1ですね。
これがリストの2番目の数字と同じだったら「ANSWER」を0にし、違ったら「ANSWER」を1にします。
次に、新しく更新された「ANSWER」と3番目が等しかったら「ANSWER」を0にし、異なったら「ANSWER」を1にします。
これをリストの10個目まで続けます。繰り返しの回数は、「リストの長さ−1」ということに気をつけて下さい。
以上これをプログラムにすると上の写真のように作ることができます!
排他的論理和いかがだったでしょうか。
今この瞬間あなたがパソコンで情報を得るだけで色々なノイズを除くためこの排他的論理和がいっぱい使われているかもしれません。
Scratchでは計算のやり方をプログラムに書き起こすことだけを紹介しました。普通の足し算だったらすでに用意されているブロックを使えばいいかもしれませんが特殊な演算は自分で作らないといけません。自分で作ってみるとScratchでもともと用意されている四則演算も裏ではこんな複雑なプログラムが動いているんじゃないかって考えてしまいますね!
他にも面白い演算があったら紹介していこうと思います!
[…] 排他的論理和を勉強してみ… […]