0 is not a power of 2

deadalnix via Digitalmars-d digitalmars-d at puremagic.com
Tue May 19 16:41:00 PDT 2015


On Tuesday, 19 May 2015 at 22:43:46 UTC, Steven Schveighoffer 
wrote:
> On 5/19/15 5:32 PM, deadalnix wrote:
>> On Tuesday, 19 May 2015 at 20:09:23 UTC, Steven Schveighoffer 
>> wrote:
>>> On 5/19/15 4:01 PM, deadalnix wrote:
>>>> Have you tried things like :
>>>>
>>>> (x >> bsr(x)) == 1 ?
>>>>
>>>> I have no idea if this is faster or not, but worth trying.
>>>
>>> Hm.. I think this would always succeed. Perhaps you mean:
>>>
>>> 1 << bsr(x) == x;
>>>
>>
>> Both work as long as you use a fully defined instruction, like 
>> tzcnt.
>
> Hm... I messed up, (x >> bsr(x)) is always zero. I think you 
> meant to write:
>
> x >> (bsr(x) - 1)
>
> which always is 1.
>
> Either way, it doesn't work.
>
> -Steve

No.

bsr(1) is 0.
1 >> bsr(1) is 1.
0 >> anything is 0.

So it doesn't matter if bsr is defined or not for 0.


More information about the Digitalmars-d mailing list