The >>> operator exist in Java...obviously <<< have no sense, you cannot
shift left and keep the sign bit.
I don't see anything strange in the behaviour of bitwise operators:
$i = 1;
$i <<= 31;
printf("%d\n", $i);
This code outputs the same thing (-2147483648) in PHP, Perl and in C.
However, the behaviour of the "print" operator is different in PHP and in
Perl:
print $i;
This will output -2147483648 in PHP and 2147483648 in Perl.
<[EMAIL PROTECTED]> wrote in message
news:[EMAIL PROTECTED]
> ID: 25877
> Updated by: [EMAIL PROTECTED]
> Reported By: cestmirl at freeside dot sk
> Status: Open
> Bug Type: Documentation problem
> Operating System: Linux Debian, Win32
> PHP Version: 4.3.3
> New Comment:
>
> Heh, who told me that C supports '>>>' operator... there's no such
> operator in that language.
>
>
> Previous Comments:
> ------------------------------------------------------------------------
>
> [2003-10-15 07:56:56] [EMAIL PROTECTED]
>
> Since PHP doesn't support unsigned shift operations that are
> represented by '<<<' or '>>>' in the C language, bit shift operations
> are done in "sign-respectful" manner, where the most significant bit
> will never be changed. This is expected behaviour, but not documented
> yet.
>
>
> ------------------------------------------------------------------------
>
> [2003-10-15 07:40:14] cestmirl at freeside dot sk
>
> Description:
> ------------
> Bitwise shift right operator returns negative result (most significant
> bit set) for negative input (left operand).
>
> Following assert fails (though should NOT)
>
> assert((1 << 31 >> 31) == 1);
>
> Reproduce code:
> ---------------
> assert((1 << 31 >> 31) == 1);
>
> Actual result:
> --------------
> assertion failed
>
>
> ------------------------------------------------------------------------
>
>
> --
> Edit this bug report at http://bugs.php.net/?id=25877&edit=1