83 votes

Avez-vous déjà eu à utiliser le décalage de bits dans de vrais projets?

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?

60voto

Nils Pipenbrinck Points 41006

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.

38voto

MrZebra Points 6508

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.

26voto

Anonymous Points 11017
  • 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).

15voto

MattK Points 7319

Un endroit où je les utiliser tout le temps est lors de la transposition de la endian-ness de nombres entiers pour les applications multiplates-formes. Ils ont aussi parfois venir dans maniable (avec d'autres de manipulation de bits les opérateurs) lors de blitting des graphismes en 2D.

9voto

David Grant Points 8477

J'ai utilisé quelques fois, mais presque toujours pour l'analyse d'un format de fichier binaire.

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