マスタリング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
ビット演算子
- 否定(NOT)演算子 "~"
全てのビットが反転する
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:ビットベクタについては、理解不足