Tout d'abord il faut savoir que les entiers sont représentés en interne en binaire (0 ou 1 pour chaque bit).
par exemple 124 en décimal ça donne 0111 1100 en binaire.
124 = 0*2^0 + 0*2^1 + 1*2^2 + 1*2^3 + 1*2^4 + 1*2^5 + 1*2^6 + 0*2^7
- & : il s'agit d'un ET logique bit à bit entre 2 valeurs. On prend chaque bits des opérandes et on applique
la table suivante :
0 & 0 = 0
1 & 0 = 0
0 & 1 = 0
1 & 1 = 1
exemple :
124&57 = 01111100 & 00111001 = 00111000
- | : il s'agit d'un OU logique bit à bit entre 2 valeurs. On prend chaque bits des opérandes et on applique
la table suivante
0 & 0 = 0
1 & 0 = 1
0 & 1 = 1
1 & 1 = 1
exemple :
124|57 = 01111100 | 00111001 = 01111101
il existe également des XOR (^) et un NOT (~)
Ces opérateur servent surtout à faire des masques pour des champs de bits.Par exmemple lorsque l'on veut
stocker 8 valeurs correspondant à des états VRAI ou FAUX, au lieu d'utiliser 8 variables différentes on
utilise une seule et des champs de bits. par exemple le bit 0 pour l'état 0 etc. Pour Affecter une valeur
on utilisera le OU et pour la tester le ET.
- << : il s'agit d'un décalage à gauche des bits :
exemple :
124<<2 = 01111100<<2 = 0111110000
- >> : il s'agit d'un décalage à droite des bits :
exemple :
124>>2 = 01111100>>2 = 011111
Ces opérateur servent à extraire des bits d'un champ de bit mais également à réaliser des multiplications
er de divisions par des puissances de 2 trè rapidement (comme en décimal on on rajoute des 0 ou vire
des chiffres pour multiplier ou diviser par 10 facilement)
Pour ton exemple, il s'agit sans doute de calculer un checksum ou de réaliser du cryptage. Les opérations binaires utilisées
sont dont liées à des formules mathématiques assez complexes ayant des propriétés particulières et dont l'interprétation
en C donne des expressions assez tortueuses.