Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 32 bitowy int na 64 bitowym systemie, jak wymusic 32 bit inta?
Safek
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 28.12.2010

Ostrzeżenie: (0%)
-----


Witam
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);


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;
}


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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Prawdopodobnie najlepiej będzie jak zrobisz osobno dla 32-bitowej i 64-bitowej wersji:
  1. if (PHP_INT_SIZE == 4) {
  2. $zmienna = 100000 << 12;
  3. } else {
  4. $zmienna = 100000 << 123;
  5. }
Kod będzie czytelniejszy i łatwiejszy w zrozumieniu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 13:41