Peu de décalage à gauche
-
05-07-2019 - |
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 ++?
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