in reply to How can I set a bit to 0 ?
G'day bartender1382,
"What I don't know how to do ... turn off a specific bit whether it is set or not."
Update: This wasn't a good solution (see reply below). The following would have been better:
#!/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; }
I've stricken the original code; it's in the spoiler. The output is unchanged.
Here's some example code:
#!/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; }
Output:
Initial: 00010100 00000110 Bit 0 off: 00010100 00000110 Bit 1 off: 00010100 00000100 Bit 4 off: 00000100 00000100
— Ken
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How can I set a bit to 0 ?
by GrandFather (Saint) on May 26, 2022 at 21:43 UTC | |
by stevieb (Canon) on May 26, 2022 at 21:59 UTC | |
by kcott (Archbishop) on May 27, 2022 at 02:33 UTC | |
by GrandFather (Saint) on May 27, 2022 at 04:22 UTC | |
by kcott (Archbishop) on May 27, 2022 at 05:13 UTC | |
by syphilis (Archbishop) on May 27, 2022 at 09:55 UTC | |
| |
by kcott (Archbishop) on Jun 02, 2022 at 05:59 UTC | |
| |
by LanX (Saint) on May 27, 2022 at 13:20 UTC |