my $d = "16895";
my $f = "33206";
my $od = sprintf("%5o",$d);
my $of = sprintf("%5o",$f);
print "$d->$od\n$f->$of\n";
my $d = "16877";
my $f = "33188";
my $od = sprintf("%5o",$d);
my $of = sprintf("%5o",$f);
print "$d->$od\n$f->$of\n";
# get the three lowest bits (use the INTEGER value for this, not the o
+ctal string!)
my $l3b = $d & 7; # 0000111 in binary, or '7' in octal and in dec
print "lowest three bits of octal $od is $l3b\n";
# get the three bits starting at bit 4 (111000 in bin, 70 in oct, 56 d
+ec)
my $l43b = $d & oct(70); # still 6 bits though,
$l43b = $l43b >> 3;
print "$od and oct(70) shifted 3 bits to the right = ",sprintf("%o",$l
+43b)," in octal\n";
gives
16895->40777
33206->100666
16877->40755
33188->100644
lowest three bits of octal 40755 is 5
40755 and oct(70) shifted 3 bits to the right = 5 in octal