Ok, I've seen what you posted lower down in this thread, and wanted to follow up to my earlier promise to offer some code.
The following solution will work for any integer, whether it requires 4 bits or 32 to represent it.
use strict;
use warnings;
my $number = 75;
my $bitval = 1;
my $bits = '';
while ( $bitval <= $number ) {
my $bit = $number & $bitval ? 1 : 0;
$bits = $bit . $bits;
$bitval *= 2;
}
print $bits, "\n";
$bitval contains the mask value, and is incremente by times two after each iteration. That makes the masks 1, 2, 4, 8, 16, 32.... etc. (look familiar?). The ... ? ... : ... (ternary operator) serves to turn a bit value into just a zero or one. The rest I think you'll figure out as you look at it.
|