#!/usr/bin/env perl
use strict;
use warnings;
my $var1 = 0b00010100;
my $var2 = 0b00000110;
my $fmt = "%08b\n";
print "Initial:\n";
printf $fmt, $var1;
printf $fmt, $var2;
for my $bit (0, 1, 4) {
print "Bit $bit off:\n";
$var1 &= ~(1 << $bit);
printf $fmt, $var1;
$var2 &= ~(1 << $bit);
printf $fmt, $var2;
}
####
#!/usr/bin/env perl
use strict;
use warnings;
my $var1 = 0b00010100;
my $var2 = 0b00000110;
my $fmt = "%08b\n";
print "Initial:\n";
printf $fmt, $var1;
printf $fmt, $var2;
for my $bit (0, 1, 4) {
print "Bit $bit off:\n";
$var1 = set_bit_off($bit, $var1);
printf $fmt, $var1;
$var2 = set_bit_off($bit, $var2);
printf $fmt, $var2;
}
sub set_bit_off {
my ($bit, $num) = @_;
my $mask = 1 << $bit;
$num ^= $mask if $num & $mask;
return $num;
}
##
##
Initial:
00010100
00000110
Bit 0 off:
00010100
00000110
Bit 1 off:
00010100
00000100
Bit 4 off:
00000100
00000100