Question

Supposons que je veuille décaler un bit i deux fois vers la gauche et stocker la valeur dans f.

f = i << 2;

Est-ce correct? Comment faire exactement cela en C / C ++?

Était-ce utile?

La solution

Oui.

f = i << 2

Les décalages sont utiles dans de nombreuses opérations de twiddling.

C’était un excellent moyen de multiplier un nombre par quatre. Cependant, ces derniers temps, les compilateurs optimistes ont tendance à s'en occuper pour vous.

N'oubliez pas que les deux bits les plus à gauche sont supprimés.

Autres conseils

Remarque supplémentaire: même si votre question est étiquetée C++, il convient de noter que C et C ++ ont emprunté des chemins légèrement différents en ce qui concerne le transfert de valeurs négatives. En C ++, le résultat de << ou >> sur une valeur négative est défini par l'implémentation. En C, <=> est défini par la mise en œuvre, tandis que <=> génère un comportement non défini .

Oui, i << 2, f = i << 2 ou f <<= 2 sont toutes les choses que l'on peut vouloir faire pour décaler des bits.

Plus de choses à changer:

  • vous avez aussi >>. Au niveau des bits, << fonctionne différemment pour les types signé et non signé.

  • la priorité de + et - est inférieure à celle de * et de /, ce qui trompe certaines personnes, car on pourrait imaginer qu'elles ressemblent davantage à <=> et <=>.

Par souci d’exhaustivité pour vous aider dans vos opérations sur les bits, vous pouvez consulter cette page: uow TEXTBOOK - > bitops.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top