***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