Perl の vec() で bit vector の操作
2011-04-02-4
[Programming]
後で使うために自分用メモ。
「perldoc -f vec」より。
■テストコード:
■実行例:
「perldoc -f vec」より。
■テストコード:
#!/usr/bin/perl use strict; use warnings; my $v = ""; vec($v, 0, 1) = 1; # 0ビット目を1に printbits($v); vec($v, 9, 1) = 1; # 9ビット目を1に printbits($v); vec($v, 0, 1) = 0; # 0ビット目を0に printbits($v); print vec($v, 0, 1), "\n"; # 0ビット目を見る print vec($v, 9, 1), "\n"; # 9ビット目を見る sub printbits { my ($v) = @_; my $bits = unpack("b*", $v); my @bits = split(//, $bits); print "$bits "; print join(",", @bits), "\n"; }
■実行例:
10000000 1,0,0,0,0,0,0,0 1000000001000000 1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 0000000001000000 0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 0 1