Könnte mir bitte jemand die Verwendung von <<
und >>
in Go erklären ? Ich denke, es ist ähnlich wie in einigen anderen Sprachen.
go
bitwise-operators
brianoh
quelle
quelle
Aus der Spezifikation unter http://golang.org/doc/go_spec.html geht hervor , dass es sich zumindest bei Ganzzahlen um eine binäre Verschiebung handelt. Beispiel: Binär 0b00001000 >> 1 wäre 0b00000100 und 0b00001000 << 1 wäre 0b00010000.
Go akzeptiert anscheinend die 0b-Notation für binäre Ganzzahlen nicht. Ich habe es nur für das Beispiel verwendet. In Dezimalzahlen ist 8 >> 1 4 und 8 << 1 16. Das Verschieben nach links um eins entspricht der Multiplikation mit 2, und das Verschieben nach rechts um eins entspricht dem Teilen durch zwei, wobei der Rest verworfen wird.
quelle
Die Operatoren << und >> sind Go-Arithmetik-Operatoren .
quelle
Sie sind im Grunde genommen arithmetische Operatoren und in anderen Sprachen ist dies das gleiche Beispiel für PHP, C, Go
GEHEN
GO Demo
C.
C Demo
PHP
PHP Demo
Sie würden alle ausgeben
quelle
Die << und >> von Go ähneln Verschiebungen (dh Division oder Multiplikation mit einer Potenz von 2) in anderen Sprachen, aber da Go eine sicherere Sprache als C / C ++ ist, erledigt es einige zusätzliche Arbeit, wenn die Anzahl der Schichten eine Zahl ist .
Verschiebungsanweisungen in x86-CPUs berücksichtigen nur 5 Bit (6 Bit auf 64-Bit-x86-CPUs) der Verschiebungsanzahl. In Sprachen wie C / C ++ übersetzt der Shift-Operator in einen einzelnen CPU-Befehl.
Der folgende Go-Code
druckt
während ein C / C ++ - Programm drucken würde
quelle
<<
oder>>
in C / C ++ führt?<<
ist Linksverschiebung.>>
ist eine vorzeichenverlängernde Rechtsverschiebung, wenn der linke Operand eine vorzeichenbehaftete Ganzzahl ist, und eine nullverlängerende Rechtsverschiebung, wenn der linke Operand eine vorzeichenlose Ganzzahl ist.Zum besseren Verständnis
>>
denkenWenn sie also auf eine vorzeichenlose Ganzzahl angewendet werden, werden die Bits links mit Null gefüllt, während bei Anwendung auf eine vorzeichenbehaftete Ganzzahl die Bits links mit dem Bit ganz links gefüllt werden (das 1 ist, wenn die vorzeichenbehaftete Ganzzahl gemäß 2 negativ ist ergänzen).
quelle
Wenn wir in der Dezimalmathematik mit 10 multiplizieren oder dividieren , bewirken wir die Nullen am Ende der Zahl.
In der Binärdatei hat 2 den gleichen Effekt. Also fügen wir am Ende eine Null hinzu oder entfernen die letzte Ziffer
quelle