Avez-vous déjà eu à utiliser le décalage de bits dans de véritables projets de programmation? La plupart (si pas tous) de haut niveau, langues ont opérateurs de décalage, mais quand souhaitez-vous réellement besoin d'eux?
Réponses
Trop de publicités?Je reste à écrire le code pour les systèmes qui n'ont pas de virgule flottante de soutien dans le matériel. Dans ces systèmes, vous avez besoin de décalage de bits pour presque toutes vos opérations d'arithmétique.
Aussi vous avez besoin de changements pour générer les tables de hachage. Polynôme de l'arithmétique (CRC, les Codes de Reed-Solomon sont les applications grand public) ou utilise des quarts de travail.
Toutefois, les changements sont seulement utilisés parce qu'ils sont à portée de main et à exprimer exactement ce que l'écrivain prévu. Vous pouvez émuler tous les bits de changements avec la multiplication si vous voulez, mais ce qui serait plus difficile à écrire, moins lisible et parfois plus lent.
Les compilateurs de détecter les cas où la multiplication peut être réduit à un quart de travail.
Oui, j'ai utilisé beaucoup de fois. Peu tripoter est important sur du matériel embarqué où le bit-masques sont très fréquents. Il est également important dans les jeux de programmation, lorsque vous avez besoin de chaque bit de la performance.
Edit: Aussi, je l'utilise beaucoup pour la manipulation des images bitmap, par exemple, changer la profondeur de couleur, ou de la conversion RVB <-> BGR.
- La création de belles valeurs d'indicateur pour les énumérations (plutôt que de les taper manuellement 1, 2, 4...)
- Déballage les données de la bit-champs (de nombreux protocoles réseau les utiliser)
- Z-courbe de la traversée
- La Performance des hacks
Et je ne peux penser à beaucoup de cas, quand ils sont utilisés. C'est habituellement l'inverse, il y a des problèmes spécifiques, et il s'avère que le fait d'utiliser les opérations sur les bits que vous obtiendrez les meilleurs résultats (généralement en terme de performance en temps et/ou de l'espace).