> & 1111
> ______
> 1
Wouldn't this result in 0 and not 1?
You would use `bool( nn and not (nn&(nn-1)) )`
Let's try for 15
start 0b1111 sans1 0b1110 anded 0b1110 not 0b0000
start 0b1000 sans1 0b0111 anded 0b0000 not 0b0001
Doesn't work for 0 so you have to special case it.
AND'ing each bit of the two numbers yields only 0 bits:
10000 &01111 ______ 00000
You would use `bool( nn and not (nn&(nn-1)) )`
Let's try for 15
Now 8 It's basically a claim that, in binary, only powers of two won't have any overlapping bits between the initial number and that number minus one.Doesn't work for 0 so you have to special case it.