ついて説明をするのでまとめてみました。
ビット論理演算とは?
パソコンで扱う情報はすべてビットと呼ばれる情報で扱われます。
数値も例えば10であればパソコンの中では1010という情報で
扱われます。
1010といのはそれぞれ1ビットの値の組み合わせです。
つまり1010は4ビットの情報を持っているのです。
ビット論理演算とはそのビットごとの計算を行うことです。
普通に10*5をすると50になりますが、ビット論理積をすると、
10&5は0になります。
不思議ですね。
では、説明を始めます。
まずは、「&(論理積)」から始めます。
ビットごとの計算とはつまり1ビットずつの計算です。
10*5であれば1010と101を1ビットずつかけ算します。
つまり、
1010
& 0101
-----------
こういう計算を行います。
論理積はかけ算なので、簡単です。
上のビットも下のビットも1の時だけ計算結果が1になります。
上も下も1になっているビットがないので全て
0になります。
1010
& 0101
-----------
0000
では、10と2の論理積と計算してみましょう。
10は1010で2は0010です。
1010
& 0010
------------
0010
下から2ビット目だけが上も下も1になっているので「0010」が
答えになります。
次は「|(論理和)」です。
論理積は、「上と下両方が1のビットが1」になりましたが、論理和は
「上と下どちらかが1のビットが1」になります。
では、先ほどの10と5を論理和で計算してみましょう。
1010
| 0101
------------
1111
どちらかが1になっているビットが4ビット全てなので答えは
全部1になります。
次は、「^(排他的論理和)」です。
言葉が難しいですね…。
これは、前の二つに比べてひねくれてます…。
どうひねくれているのかというと、「上と下が違うときだけ1」になります。
今度は10(1010)と11(1011)で排他的論理和をしてみます。
1010
^ 1011
-----------
0001
と、なります。
上と下のビットの値が異なるのが最下位ビットのみなので答えは
「0001」となります。
どうですか?
なんとなく論理演算を分かってもらえましたか?
論理演算を視覚的に分かりやすく表現したベン図というものが
ありますので、そちらもよかったら見て下さい。
ベン図について