## Define a bit vector with positions 4 to 7 set to 1
my $bv1='';
vec($bv1,$_,1)=1 foreach (3..6);
dumpbv($bv1);
sub dumpbv
{
my $bitv = shift @_;
my $pos=0;
foreach (split "",unpack("b*",$bitv)){
print;
$pos++;
}
}
####
sub sumbv
{
return $_[0] | $_[1];
}
####
sub cmpbv
{
return $_[0] & $_[1];
}
####
use strict;
use warnings;
## Define a bit vector with positions 4 to 7 set to 1
my $bv1='';
vec($bv1,$_,1)=1 foreach (3..6);
dumpbv ($bv1); print " bv1\n";
# Define a bit vector with positions 3 to 5 set to 1
my $bv2='';
vec($bv2,$_,1)=1 foreach (2..4);
dumpbv ($bv2); print " bv2\n";
print "--------\n";
my $bv_sum = sumbv($bv1,$bv2);
dumpbv ($bv_sum);print " OR\n";
my $bv_cmp = cmpbv($bv1,$bv2);
dumpbv ($bv_cmp);print " AND\n";
sub sumbv
{
return $_[0] | $_[1];
}
sub cmpbv
{
return $_[0] & $_[1];
}
sub dumpbv
{
my $bitv = shift @_;
my $pos=0;
foreach (split "",unpack("b*",$bitv)){
print;
$pos++;
}
}
####
00011110 bv1
00111000 bv2
--------
00111110 OR
00011000 AND