2017-09-08 7 views
1

Quel contexte nous devons connaître à propos de < et des opérateurs >> et quel genre de problème ils résolvent. Je peux donc commencer à penser à résoudre mes futurs problèmes en les utilisant.Application réelle des opérateurs << et droit >> de décalage vers la gauche

Chaque fois que je vois le code/la logique qui contient ces opérateurs. Je vais commencer à éviter le code/la logique. Je les ai vus principalement dans des bibliothèques de traitement audio ou vidéo.

S'il vous plaît aidez-moi à sortir de ma peur sur eux.

Répondre

1

Une utilisation immédiate est la multiplication par deux. Auparavant, il était plus rapide de virer à gauche que de multiplier par deux, c'est donc une technique de performance (probablement l'une des raisons pour lesquelles il est utilisé dans le traitement vidéo).

J'ai récemment commencé à l'utiliser pour définir des drapeaux dans mon code C#, pour aider à montrer qu'ils sont, en fait, drapeaux de bits:

[Flags] 
enum myFlags { 
    undefined = 0, 
    smallest = 1, 
    next_smallest = smallest << 1 
} 
+0

C'est à ce moment-là, le nombre << 1 mais que faire si vous faites le nombre << 3. Il ne se multiplie pas définitivement par 2. Question est quelles sont les situations où nous utilisons. Merci pour Ur réponse – bash

+0

En fait, puisque 1 << 3 est le même que 1 << 1 << 1 << 1, ou 2 * 2 * 2. Il se multiplie par 2^3! Et au niveau machine, il s'agit d'une exécution à cycle unique (1 << 3) au lieu d'au moins trois cycles (((1 * 2) * 2) * 2). – theGleep

1

Opérateurs de décalage sont plus efficaces sur le matériel. Ils sont essentiellement spécialisés dans la multiplication et la division - la multiplication et la division peuvent être très coûteuses sur un FPGA ou un ASIC. Dans une certaine mesure, l'utilisation des opérateurs de décalage pour remplacer la multiplication et la division de vos programmes nécessitera des décisions de conception adroites.

Chaque fois que je vois le code/logique qui contient ces opérateurs. Je vais commencer à éviter le code/la logique. Je les ai vus principalement dans des bibliothèques de traitement audio ou vidéo.

Le traitement vidéo et audio dépend essentiellement des données binaires pour être réalisable. >> et << peut être une façon plus naturelle d'observer les opérations sur les bits sous-jacents.