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
{}
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
{}
Il s'agit d'une opération de décalage vers la gauche. Si vous avez:
a << b
où a
et b
sont des types entiers (char, court, long, etc.), les bits sont décalées vers la gauche a
b
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
)
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.
Ainsi, 'Val & (0x0001 << 1)' signifie déplacer bit1 à gauche et & fonctionner avec Val? –
Non, cela signifie déplacer 0x0001 un bit à gauche, de sorte qu'il devient 0x0002. –
@Nano: Oui, même chose que 'Val & 2'. – Potatoswatter
Ceci est un bit shift operator.
Mais lorsque les entiers ne sont pas impliqués, méfiez-vous d'un overloaded operator sous-jacent.
Corollaire: '<< 0' n'a aucun effet. – joce