#!/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