Opérateurs << et >> en Go : décalages binaires à gauche et à droite
Bonjour à tous ! Je viens de commencer à apprendre Go et je suis tombé sur les opérateurs `<<` et `>>`. Dans la documentation, il est dit que ce sont des opérateurs de décalage, mais je ne comprends pas vraiment comment ils fonctionnent en pratique.
Voici un exemple de code que j'ai écrit :
```go
package main
import "fmt"
func main() {
x := 4
y := x << 2
z := x >> 1
fmt.Println(y, z) // Affiche : 16 2
}
```
Je m'attendais à ce que `x << 2` donne 8 (4 * 2), et `x >> 1` donne 2 (4 / 2). Le résultat 16 et 2 m'a dérouté. Pourquoi un décalage à gauche de 2 a-t-il donné une multiplication par 4, et non par 2 ? Et que signifient réellement ces opérateurs ?
J'ai aussi vu l'utilisation de `<<` dans le contexte de `1 << iota` lors de la définition de constantes. Pouvez-vous expliquer comment cela fonctionne ? J'ai essayé de comprendre les opérations binaires, mais je me perds dans le système binaire. Je serais reconnaissant pour une explication détaillée avec des exemples, de préférence en français, car je ne comprends pas complètement les articles en anglais.