przegladalem forum ale takiego problemu nie znalazlem (w druga str bardziej:))
Problem jest taki:
posiadam system 64 bitowy a przez to mam rozszerzony zakres inta.
I teraz jak robie przesuniecie bitowe liczby, dajmy na to:
CODE
$zmienna = 1732584193<<5;
var_dump($zmienna);
var_dump($zmienna);
wyswietla mi:
CODE
int(55442694176)
a powinien(dla inta 32-bitowego):
CODE
-391880672
probowalem juz ustawiac
CODE
ini_set(PHP_INT_SIZE,4);
ale to nic nie dalo, i funkcja (znalazlem w necie, typek twierdzi ze bangla)
CODE
function thirtyTwoBitIntval($value)
{
if ($value < -2147483648)
{
return -(-($value) & 0xffffffff);
}
elseif ($value > 2147483647)
{
return ($value & 0xffffffff);
}
return $value;
}
{
if ($value < -2147483648)
{
return -(-($value) & 0xffffffff);
}
elseif ($value > 2147483647)
{
return ($value & 0xffffffff);
}
return $value;
}
tez nie dziala poprawnie, tj ucina po prostu bity, nie interpretuje np jako liczba ujemna, a powinno...
nie mam juz sily na to, macie moze jakis pomysl?