2011-04-27 3 views
2

Je suis nouveau à C++, quelle est la signification exacte pour le << dans la déclaration ci-dessous, Merci.<< opérateur en C++?

if (Val & (0x0001 << 0)) 
{} 
else 
{} 

Répondre

6

Il s'agit d'une opération de décalage vers la gauche. Si vous avez:

a << b 

a et b sont des types entiers (char, court, long, etc.), les bits sont décalées vers la gauche ab endroits avec des zéros remplir à droite. En d'autres termes, a est multiplié par 2^b.

Exemple:

12 << 3 

12 (decimal) = 00001100 (binary) 

décalage vers la gauche 3 places:

00001100 becomes 01100000 

qui est 96 (qui est 12 * 8 ou 12 * 2^3)

+1

Corollaire: '<< 0' n'a aucun effet. – joce

1

Cela signifie le décalage 0x0001 numéro 0 bits vers la gauche. Dans ce cas précis, cela ne fait rien.

Par exemple, si c'était (0x0001 << 4), 0x0001 deviendrait 0x0010. Chaque position décalée à gauche est comme multiplier le nombre par 2.

+0

Ainsi, 'Val & (0x0001 << 1)' signifie déplacer bit1 à gauche et & fonctionner avec Val? –

+0

Non, cela signifie déplacer 0x0001 un bit à gauche, de sorte qu'il devient 0x0002. –

+0

@Nano: Oui, même chose que 'Val & 2'. – Potatoswatter