Mail Archives: djgpp/1999/07/09/18:23:15
-----Original Message-----
From: Darren Noble <darren AT calderathin DOT com>
To: djgpp AT delorie DOT com <djgpp AT delorie DOT com>
Date: Thursday, July 08, 1999 3:16 AM
Subject: Re: bits and flags
>On Thu, 08 Jul 1999, you wrote:
>> Lets say I have
>> char ch=1;
>>
>> Now I can test if a bit is "on"
>> if(ch&1)
>> .......
>>
>> but how can I set a bit.. Lets say bit 4?
>> and how can I "turn off" a bit?
>
>If you take 2 to the 4th power witch is 16, you can say:
>
> ch-=16;
>
>and that will turn of the 4th bit if it is on. If it is off and you want
it on
>you can go
>
> ch+=16;
>
>so basicly you add or subtract 2 to the power of the bit you want.
or, if you like assembler you can use "setb" and friends.
in addition, OR'ing allows you to set a bit, and you can also AND a bit out
with a mask. using logical bitwise operations are usually faster than
adding and subtracting.
e.g.
a|=2; set bit #1 of 0-7 bits.
a&=0xfd; clear bit #1 of 0-7 bits.
- Raw text -