67 votes

A quoi sert un décalage au niveau du bit (gauche ou droite) et à quoi sert-il ?

J'ai vu les opérateurs >> et << dans divers codes que j'ai examinés (je n'ai rien compris), mais je me demande simplement ce qu'ils font réellement et quelles sont leurs utilisations pratiques.

Si les décalages sont comme x * 2 et x / 2 , quelle est la vraie différence par rapport à l'utilisation réelle des opérateurs * et / Y a-t-il une différence de performances ?

37voto

Nitish Points 855

Décalage du bit à gauche pour multiplier par n'importe quelle puissance de deux et décalage du bit à droite pour diviser par n'importe quelle puissance de deux.

Par exemple, x = x * 2; peut également être écrit sous la forme x<<1 ou x = x*8 peut être écrit sous la forme x<<3 (puisque 2 à la puissance 3 est 8). De même, x = x / 2; est x>>1 et ainsi de suite.

17voto

Raghu Points 205

Décalage à gauche : Il est égal au produit de la valeur à décaler par 2 élevé à la puissance du nombre de bits à décaler.

Exemple:

 1 << 3
0000 0001  ---> 1
Shift by 1 bit
0000 0010 ----> 2 which is equal to 1*2^1
Shift By 2 bits
0000 0100 ----> 4 which is equal to 1*2^2
Shift by 3 bits
0000 1000 ----> 8 which is equal to 1*2^3

Décalage à droite : Il est égal au quotient de la valeur qui doit être décalée de 2 élevée à la puissance du nombre de bits à décaler.

Exemple:

 8 >> 3
0000 1000  ---> 8 which is equal to 8/2^0
Shift by 1 bit
0000 0100 ----> 4 which is equal to 8/2^1
Shift By 2 bits
0000 0010 ----> 2 which is equal to 8/2^2
Shift by 3 bits
0000 0001 ----> 1 which is equal to 8/2^3

3voto

Shobhit Raj Points 59

Les opérateurs de décalage de bits sont plus efficaces que les opérateurs / ou * .

Dans l'architecture informatique, diviser(/) ou multiplier(*) prend plus d'une unité de temps et s'enregistre pour calculer le résultat, tandis que l'opérateur de décalage de bits n'est qu'un seul registre et un seul calcul d'unité de temps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X