Although I'm not the one who first addressed this, I meant it's not a bug 
but undocumented stuff. BTW, why didn't you use the recommended web 
interface within the bug system instead of just replying the notification 
mail?

Moriyoshi

"Kouber Saparev" <[EMAIL PROTECTED]> wrote:

> 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

Reply via email to