|
|
|
|
|
by knome
1331 days ago
|
|
Missing a 'not'. You would use `bool( nn and not (nn&(nn-1)) )` Let's try for 15 start 0b1111
sans1 0b1110
anded 0b1110
not 0b0000
Now 8 start 0b1000
sans1 0b0111
anded 0b0000
not 0b0001
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. |
|