Re: #25877 [Opn]: >> operator bug for negative LOP

From: Date: Wed, 15 Oct 2003 13:32:53 +0000
Subject: Re: #25877 [Opn]: >> operator bug for negative LOP
References: 1 2  Groups: php.doc 
Request: Send a blank email to phpdoc+get-969356603@lists.php.net to get a copy of this message
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. <moriyoshi@php.net> wrote in message news:20031015120023.31912.qmail@rn2.php.net... > ID: 25877 > Updated by: moriyoshi@php.net > 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] moriyoshi@php.net > > 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 !M > š’—ƒ­ÒÿsÇÿ¸

« previous php.doc (#969356603) next »