Guten Tag an alle,
folgendes Problem... Ich habe folgenden Befehl/Ausdruck:
So, leider versteht PHP unter dem >>-Operator ein "arithmetic shift", was ich suche ist allerdings ein "locigal shift".
Hier das was PHP macht:
PHP erkennt das erste bit als ein Vorzeichen an und verschiebt alle bits DANACH um 29 Stellen.
Jetzt vollzieht PHP die Verschiebung..
Das Ergebnis ist '11' mit dem Vorzeichen '1' also -3!
Was ich will:
Der Ergebnis ist also '1011' mit dem Vorzeichen '0' also 5!
Danke im voraus!
// Edit: Ich merke grade, dass es daran zu liegen scheint das PHP nicht mehr als 32 bits verträgt... Gibt es da eine möglichkeit das zu umgehen?
folgendes Problem... Ich habe folgenden Befehl/Ausdruck:
PHP-Code:
<?php
3084996963 >> 29;
?>
Hier das was PHP macht:
PHP erkennt das erste bit als ein Vorzeichen an und verschiebt alle bits DANACH um 29 Stellen.
Code:
10110111111000010101000101100011 (Ausgangszahl - Binär) 1 0110111111000010101000101100011 ^ Vorzeichen ^ Zahl
Das Ergebnis ist '11' mit dem Vorzeichen '1' also -3!
Was ich will:
Code:
10110111111000010101000101100011 Nach Verschiebung: 00000000000000000000000000001011
Danke im voraus!
// Edit: Ich merke grade, dass es daran zu liegen scheint das PHP nicht mehr als 32 bits verträgt... Gibt es da eine möglichkeit das zu umgehen?
Kommentar