1533 Stimmen

Was sind bitweise Verschiebungsoperatoren (Bit-Shift) und wie funktionieren sie?

Ich habe in meiner Freizeit versucht, C zu lernen, und andere Sprachen (C#, Java usw.) haben das gleiche Konzept (und oft die gleichen Operatoren) ...

Was ich mich frage, ist, was die Bitverschiebung ( << , >> , >>> ) tun, welche Probleme können damit gelöst werden, und welche Probleme lauern hinter der Kurve? Mit anderen Worten: ein Leitfaden für absolute Anfänger in Sachen Bit-Shifting in all seinen Vorzügen.

-3voto

lukyer Punkte 6697

Beachten Sie, dass nur die 32-Bit-Version von PHP auf der Windows-Plattform verfügbar ist.

Wenn Sie dann zum Beispiel << oder >> um mehr als 31 Bits verschieben, sind die Ergebnisse nicht zu erwarten. Normalerweise wird die ursprüngliche Zahl anstelle von Nullen zurückgegeben, und das kann ein wirklich schwieriger Fehler sein.

Wenn Sie eine 64-Bit-Version von PHP (Unix) verwenden, sollten Sie natürlich eine Verschiebung um mehr als 63 Bit vermeiden. Allerdings verwendet z.B. MySQL das 64-Bit-BIGINT, so dass es keine Kompatibilitätsprobleme geben sollte.

UPDATE: Ab PHP 7 Windows sind PHP-Builds endlich in der Lage, volle 64-Bit-Ganzzahlen zu verwenden: Die Größe einer ganzen Zahl ist plattformabhängig, obwohl ein Maximalwert von etwa zwei Milliarden der übliche Wert ist (das sind 32 Bit mit Vorzeichen). Auf 64-Bit-Plattformen liegt der Höchstwert normalerweise bei etwa 9E18, außer unter Windows vor PHP 7, wo er immer 32 Bit betrug.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X