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
