delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/07/10/20:59:58

Message-ID: <3787DE6D.BACB1B58@silesia.top.pl>
Date: Sun, 11 Jul 1999 02:59:41 +0300
From: Michal <wapex AT silesia DOT top DOT pl>
X-Mailer: Mozilla 4.6 [en] (Win98; I)
X-Accept-Language: en
MIME-Version: 1.0
To: djgpp AT delorie DOT com
Subject: Re: bits and flags
References: <01beca3f$da040700$LocalHost AT thendren>
Reply-To: djgpp AT delorie DOT com


Christopher Nelson wrote:
> 
> -----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.
Not true, i don't know about other processors but pentium and higher
(which is the platform of djgpp) execute them all at the same speed,
which is in perfect conditions two instructions per clock on pentium and
pentium MMX and two or one (depending on operands types) instruction for
pentium pro and pentium II, also in both you can use registers or
immediate so there are no speed differences.
> 
> e.g.
> 
> a|=2;  set bit #1 of 0-7 bits.
> a&=0xfd; clear bit #1 of 0-7 bits.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019