Re: testing if just one bit is set...
On Nov 14, 6:48 pm, "Andrew Koenig" <a...@acm.org> wrote:
"Victor Bazarov" <v.Abaza...@comAcast.net> wrote in message
news:gevfrd$q4n$2@news.datemas.de...
If n has an unsigned type (i.e. unsigned int or unsigned
long), then (n&-n) is equal to n unless n has more than one
bit set. So the expression you're looking for is n!=(n&-n)
Wow... Does it work for any representation (two's
complement, one's complement, signed magnitude)?
Just 2's complement -- but that's what everyone uses these
days anyway.
Andy, what's up? In your posting, you specifically said "If n
has an unsigned type". And you know very well that the standard
defines - for unsigned types exactly.
And not everyone uses 2's complement. There are at least two
architectures being sold today that don't: one with 36 bit 1's
complement, and another with 48 bit signed magnitude. (Since
they're mainframes, a lot of programmers don't see them, but
they are there.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34