Hallo,
Was ich an Deiner Implementation übrigens interessant finde, ist, daß sie funktioniert, obwohl PHP auf 32-Bit-Systemen die Zahl 0xDB6DB6DB laut var_dump() schon als Float darstellt und damit trotzdem die VerUNDund nicht verbockt ... Gibt es da intern nochmal eine Konvertierung in eine Ganzzahl?
Wenn man Zahlen mit Bitoperatoren verknüpft werden sie in Integer konvertiert - und wenn sie direkt bei Bitoperatoren dabeistehen als konstante Zahlen im Script, dann werden sie gar nicht erst in Float gewandelt.
Beispiel:
<?php
var_dump (0xDB6DB6DB);
$x = 0xDB6DB6DB;
var_dump ($x);
var_dump (0xDB6DB6DB | 0x00);
var_dump ($x | 0x00);
$y = 0xDB6DB6DB | 0x00;
var_dump ($y);
?>
Ergibt auf 32bit-Systemen:
float(3681400539)
float(3681400539)
int(-613566757)
int(-613566757)
int(-613566757)
(Das Minuszeichen kommt daher, dass die Zahl größer ist, als die größte mit PHP darstellbare vorzeichenlose Zahl)
Viele Grüße,
Christian