Ich habe diese Funktion bei php.net gefunden. Sie scheint bei positiven Zahlen zu funktionieren, schlägt aber bei negativen Zahlen fehl:
function gmp_shiftr($x,$n) { // shift right
return(gmp_div($x,gmp_pow(2,$n)));
}
echo -1 >> 8; //returns -1, presumably correctly
echo "<br />";
echo gmp_strval(gmp_shiftr(-1,8)); //returns 0, presumably incorrectly
Wie kann ich die Funktion so einrichten, dass sie mit Negativen funktioniert?
Ich habe zwei Ideen:
Vielleicht könnte ich etwas in der Art wie folgt machen
if (whatever) { $a >> $b} else{ gmp_shiftr($a, $b) }?
Oder vielleicht könnte ich etwas von den negativen Ergebnissen abziehen, je nach ihrem Wert?
Ich möchte nur den Wert, der >> geben würde, aber auch erhalten Sie es für >32bit Zahlen, wenn ich GMP verwenden.