No i dziala dobrze. Haha, dlaczego? :
Bo max wartosc dla inta to 2mld (dokladnie to 2147483647 --
http://pl.php.net/manual/en/language.types.integer.php)Tworzac inta poprzez
$z = 0xFFFFFFFF;
przypisujesz mu wartosc -1 (patrz system U2 --
http://pl.wikipedia.org/wiki/Kod_uzupełnień_do_dwóch ), bo int w php jest znakowany -- 32 bity na inta daja ci zakres od -2147483648 do +2147483647.
Dla 4mld php skonwertuje inta do floata, ale konwwertujac go recznie do inta otrzymujesz "oczekiwane" -1:
<?php
$z = 0xFFFFFFFF;
var_dump( $z ); // float(4mld) -- traktowany jako liczba bez znaku
?>
% modulo stosuje sie dla liczb calkowitych, czyli php skonwertuje oba skladniki do integera przed obliczeniem modulo
0xFFFFFFFF --> -1
0x525549DB --> 1381321179
i wykonujesz dzielenie modulo:
-1 % 1381321179
iloraz = 0, reszta
-1 -1 w zapisie HEX to oczywiscie.... 0xFFFFFFFF

[]ckd
Nie uzywaj tak wielkich liczb lub uzyj klas obslugujacych wielkie liczby.