マスタリングPerl (16章 ビットを利用する)

2進数記法

  • 0b記法
my $value = 0b10;   # 2
my $value = 0b1010_0101;   # 165
  • oct関数
my $value = oct("0b10");   # 2
  • printfで0b表記を出力
my $value = 0b0011;
printf "%#b\n", $value;   # 0b11

32桁の2進数表記にする場合は、"0"を追加する。
0bが追加されるため、全体の桁数は34となる。

my $value = 0b0011;
printf "%#034b\n", $value;   # 0b00000000000000000000000000000011

ビット演算子

全てのビットが反転する

1010 & 1101 = 1000

1010 | 1110 = 1110

1010 ^ 1110 = 0100

my $value = 1 << 8;
print "$value\n";   # 256
printf "%#b\n", $value;   # 0b100000000

vec関数*1

指定されたビットサイズに従って文字列を各要素に分ける。
ビットサイズの値は、2のべき乗。

my $value = vec "Just another Perl hacker,", 3, 8;
print $value;   # 116
print chr($value);  # t

*1:ビットベクタについては、理解不足