Operatoren << und >> in Go: Bitverschiebungen nach links und rechts
Hallo zusammen! Ich habe gerade angefangen, Go zu lernen und bin auf die Operatoren `<<` und `>>` gestoßen. In der Dokumentation steht, dass es sich um Schiebeoperatoren handelt, aber ich verstehe nicht ganz, wie sie in der Praxis funktionieren.\n\nHier ist ein Beispielcode, den ich geschrieben habe:\n\n```go\npackage main\n\nimport "fmt"\n\nfunc main() {\n x := 4\n y := x << 2\n z := x >> 1\n fmt.Println(y, z) // Ausgabe: 16 2\n}\n```\n\nIch hatte erwartet, dass `x << 2` 8 ergibt (4 * 2) und `x >> 1` 2 ergibt (4 / 2). Das Ergebnis 16 und 2 hat mich verwirrt. Warum ergibt die Linksverschiebung um 2 eine Multiplikation mit 4 und nicht mit 2? Und was bedeuten diese Operatoren überhaupt?\n\nAußerdem habe ich die Verwendung von `<<` im Kontext von `1 << iota` bei der Definition von Konstanten gesehen. Könnt ihr erklären, wie das funktioniert? Ich habe versucht, mich mit Bitoperationen auseinanderzusetzen, aber ich bin mit dem Binärsystem verwirrt. Ich wäre für eine detaillierte Erklärung mit Beispielen dankbar.