Sorry, I managed to get myself confused here. What I meant to say was that I think >> should do an arithmetic shift if the operands are signed; unsigned shift otherwise.

It does arithmetic shift if the left operand is signed,
unsigned shift otherwise. This code:

void main()
{
    int a = 0xffffffff;
    uint b = a;
    writefln("%x", a >> 1);
    writefln("%x", b >> 1);
}

prints

ffffffff
7fffffff

Reply via email to