Re: Strange Right-Shift Problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Michael Gross wrote:
Hello
I have to migrate a PHP-application to a new Linux-Box. Both the old and the new system are Linux and PHP 5.1.1. (the old one has a Pentium 4, the new one two Xeon CPUs). I have a problem using the Crypt_Xtea-Extension. I narrowed it down to the following right-shift

looking at the class I draw the conclusion that it reqires the use of
[some] data in 'long' format (i.e. integers) and the code requires and
assumes that such integers are 32bits long ... which they are on 32bit
systems ... but not on 64bit systems . here in lies the problem, you need
someone more knowledgable than I to give you an actual solution though.

operation:

(-3281063054 >> 11) produces different results:
Old System: 495070

this is what you get with a 32bit CPU

New System: -1048576

this is what you get with a 64bit CPU


I understand that both results are "wrong", but everything worked with the old behavior and I need that behavior back very urgent.

Maybe someone can explain me in which way the bits are shifted so that the result is 495070? If I understand it, I implement my "own" shift

$a << $b	Shift left	Shift the bits of $a $b steps to the left (each step means "multiply by two")
$a >> $b	Shift right	Shift the bits of $a $b steps to the right (each step means "divide by two")

function.


thanks a lot
  Michael Gross


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux