Comment vérifier si un bit est défini en C#

En C#, j'ai une valeur 32 bits dont je suis le stockage dans un int. J'ai besoin de voir si un bit est à définir. Le peu dont j'ai besoin est 0x00010000.

J'ai trouvé cette solution:

Voici ce que je recherche:

Hex: 0 0 0 1 0 0 0 0 0 
Binaire 0000/0000/0000/0001/0000/0000/0000/0000/0000 

J'ai donc le droit de décalage de bits 16, ce qui me donnerait:

Hex: 0 0 0 0 0 0 0 0 1 
Binaire 0000/0000/0000/0000/0000/0000/0000/0000/0001 

J'ai ensuite décalage de bits à gauche 3, ce qui me donnerait:

Hex: 0 0 0 0 0 0 0 0 8 
Binaire 0000/0000/0000/0000/0000/0000/0000/0000/1000 

J'ai ensuite ma valeur 32 bits d'un octet, et voir si elle est égale à 8.

Donc mon code serait quelque chose comme ceci:

int value = 0x102F1032;
value = value >> 16;
byte bits = (byte)value << 3;
bits == 8 ? true : false;

Est-il un moyen plus simple pour vérifier si un bit est défini, sans tous les déplacement?

Vous avez juste besoin d'utiliser le bit-à-bit & opérateur.
cant vous venez d'écrire (nombre & 0x00010000 ) != 0 ?
Juste par curiosité, même si le décalage n'est pas la meilleure façon de faire cela, pourquoi ne pas vous venez de vérifier si le résultat est 1 après le premier quart? c'est à dire pourquoi maj arrière gauche 3?
Oui étrange logique de décalage à droite d'une certaine quantité de lieux immédiatement maj gauche par une autre quantité...
mais le peu vers la gauche de votre testés bits pourrait encore être définie.

OriginalL'auteur user489041 | 2011-11-08