Also, wenn meine Methode verwendet, um eine (>>>) unsigned rechts Verschiebung in PHP, ist das Ergebnis falsch, wenn die Zahlen negative enthalten.PHP Unsigned Right Shift - Fehlfunktion
PHP Application Ergebnisse:
INPUT: 10 >>> 3
INPUT: -10 >>> 3
OUTPUT: 1
OUTPUT: 2684354558
Java-Anwendung ERGEBNISSE:
INPUT: 10 >>> 3
INPUT: -10 >>> 3
OUTPUT: 1
OUTPUT: 536870910
(Die Top-Ergebnisse korrekt sind und die durch Java und dann die unteren Ergebnisse sind falsch und erzeugt durch PHP)
Nur wenn die Zahl in PHP negativ ist, schlägt sie fehl.
Die Verschiebungen in diesen Anwendungen verwendet werden, ist:
Bitte helfen Sie, wenn Sie können!
Methode für in PHP Verschiebung:
function urshift($x, $n){
$mask = 0x40000000;
if ($x < 0){
$x &= 0x7FFFFFFF;
$mask = $mask >> ($n-1);
$ret = ($x >> $n) | $mask;
$ret = str_pad(decbin($ret), 32, '0', STR_PAD_LEFT);
$ret[0] = '1';
$ret = bindec($ret);
} else {
$ret = (int)$x >> (int)$n;
}
return $ret;
Ok, es ist nicht klar, wie Ihre Ergebnisse mit Ihrem Code übereinstimmen. Könnten Sie einen [minimalen Testfall] (http://sscce.org) erstellen, der deutlich zeigt, wie die Inputs und Outputs verwendet werden? –
Ich habe es behoben, damit klar ist, was er eingibt und ausgibt. –