|
ビット演算について少し触れておきます。
CGIプログラムでは殆ど使用する機会はありませんが予備知識として勉強しておきましょう。
ビット演算は2進数レベルで考えます。
|
|
print 11 | 24;
論理和には「|」を使います。
どちらとも0の場合だけ0となり、それ以外は1となります。
|
|
11(10進数) ⇒ 01011(2進数)
24(10進数) ⇒ 11000(2進数)
論理和(OR) ⇒ 11011(2進数) ⇒ 27(10進数)
というわけで「27」が表示されます。
|
|
print 11 & 24;
論理積には「&」を使います。
どちらとも1の場合だけ1となり、それ以外は0となります。
|
|
11(10進数) ⇒ 01011(2進数)
24(10進数) ⇒ 11000(2進数)
論理積(AND) ⇒ 01000(2進数) ⇒ 8(10進数)
というわけで「8」が表示されます。
|
|
print 11 ^ 24;
排他的論理和には「^」を使います。
どちらかが1の場合だけ1となり、それ以外は0となります。
|
|
11(10進数) ⇒ 01011(2進数)
24(10進数) ⇒ 11000(2進数)
排他的論理和(XOR) ⇒ 10011(2進数) ⇒ 19(10進数)
というわけで「19」が表示されます。
|
|
print ~0;
否定には「~」を使います。
否定は引数をビット反転させたものとなります。
|
|
|
上記のように0の否定を調べる事によって、そのPCで取り扱う事が出来る符号無し整数幅を調べる事が出来ます。
私のPCでは「4294967295」が表示されました。
|
|
□更新履歴
2007.04.22 全体的に内容を見直し
|
|
|