Turning off a bit
I feel stupid that I can''t seem to figure this out, but how do I turn off just one bit in a larger number?
For example:
If I have the number
00110001 (49)
and I want to set bit 2 to 1, I know I can just use the inclusive or (|) with 00000100 (4) and it ends up 00110101 (53), which is what I want. What if I want to do it the other way around though?
What if I wanted to, say, turn the first bit off instead? How would I turn
00110001 (49) to
00110000 (48)?
I''ve tried using ^, but that has the nasty habit of switching the bit from on to off AND from off to on. Is there any way I can turn it OFF only, and leave it alone if it''s already on? It''s easy the other way around, and it annoys me that I can''t find a way here.
I could just do
if ((number&(1<<bit)) == (1<<bit))
number -= 1<<bit;
but that seems... well... sloppy, compared to something like number |= 1<<bit;
Sorry if there''s any typos in my binary, I hope you can get the point anyway. =P
-Arek the Absolute
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement