ビット演算子
メモリが扱う最小の単位は1ビット。1ビットはOnとOffの状態を、0か1で表す。
ビット演算は、文字通りビット単位で演算を行なう。多くのコンピューターでは、ビット演算は加減算より若干速く、乗除算よりずっと高速らしい。
& | ビットAND演算子 | 両オペランドのビットごとに論理積の結果を返す |
| | ビットOR演算子 | 両オペランドのビットごとの論理和の結果を返す |
^ | ビットXOR演算子 | 両オペランドのビットごとの排他的論理和の結果を返す |
<< | 左シフト演算子 | 左オペランドを、右オペランドで指定したビット数だけ左意移動する |
>> | 右シフト演算子 | 左オペランドを、右オペランドで指定したビット数だけ右に移動する |
~ | ビット否定演算子 | 全てのビットを反転させた数を返す |
#!/usr/bin/perl use strict; use warnings; printf "%d & %d = %d\n", 12, 7, 12 & 7; printf "%d | %d = %d\n", 12, 7, 12 | 7; printf "%d ^ %d = %d\n", 12, 7, 12 ^ 7; printf "%d << %d = %d\n", 5, 3, 5 << 3; printf "%d >> %d = %d\n", 34, 3, 34 >> 3; printf "~%d = %x\n", 10, ~10;
12 & 7 = 4 12 | 7 = 15 12 ^ 7 = 11 5 << 3 = 40 34 >> 3 = 4 ~10 = fffffffffffffff5
12を2進数で表すと、 1100
7を2進数で表すと、 0111
この二つの論理積は、0100
これを10進数に直すと、4