ビット演算子

メモリが扱う最小の単位は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


ビット演算子については、とりあえず理解できたと思うが、ビット演算子をどういう時に使うかが、いまいちよくわからない。