***HPクリエイターのためのCGI講座 第12回***
3.4 ビット演算子

ビット演算はデジタル演算です。
CGIプログラムでは、殆ど使う事は無いと思います。
今回は、こんな事も出来るのだなぁ程度に見ておいてください。
ビット演算子は、ビット単位での演算を行います。
ビット(bit)については、最初の方で説明しましたが、情報の最小単位(1 or 0)でしたね。
このビット毎に演算をおこなう演算子について説明します。

演算子 意 味
& And 演算
| Or 演算
^ XOR 演算
~ NOT
<< 左シフト演算
>> 右シフト演算

<&演算(and)>
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
=例=
5 & 9 は 1
5をbitに変換すると101
9をbitに変換すると1001
この2つをビット毎にandを取ると

0101
& 1001

0001


<|演算(or)>

0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
=例=
6 | 10 は 14
6をbitに変換すると110
10をbitに変換すると1010
この2つをビット毎にorを取ると

0110
| 1010

1110


<^演算(xor)>

0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
=例=
6 | 15 は 9
6をbitに変換すると110
15をbitに変換すると1111
この2つをビット毎にxorを取ると

0110
^ 1111

1001


<~演算(not)>

~ 0 = 1
~ 1 = 0
=例=
~6 は 9
6をbitに変換すると00000000000000000000000000000110
これをbit反転させると11111111111111111111111111111001

~ 00000000000000000000000000000110

11111111111111111111111111111001

32個のの0や1が並んでいます。
これは、アークランド(株)のサーバーが32ビットマシンだからです。


<<<演算子(左シフト)>

=例=
2 << 3 は 16
2をbitに変換すると10
これを左へ3bitシフトすると10000(10進数で16)になる

<>>演算子(右シフト)>
=例=
13 >> 1 は 6
13をbitに変換すると1101
これを右へ1bitシフトすると110(10進数で6)になる。
右へnビットシフトすると言うことは、右のnビットが無くなると言う事です。

演習プログラムの虫食いのところを、色々変えて確認してみてください。


********************************************************************************
講師:ALK alk@arkland.co.jp
運営:アークランド(株) http://www.arkland.co.jp