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.
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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le bit-à-bit & opérateur:
OriginalL'auteur Matt DeKrey
Il est beaucoup plus facile que cela. Suffit d'utiliser le bit à bit
AND
opérateur comme ceOriginalL'auteur David Heffernan
Vous pouvez simplement vérifier comme suit:
OriginalL'auteur Ray
Et si vous n'aimez pas le masque de bits approche:
(J'ai peut-être eu le tort de compter et ce n'est pas 21 vous êtes à la recherche pour)
Cela pourrait-moi un peu abusif pour un cas où vous avez seulement 32 bits, mais si vous avez besoin de travailler avec plus de bits tableaux c'est beaucoup plus clair.
OriginalL'auteur João Angelo
Vous pouvez simplement faire un bit à bit ET.
OriginalL'auteur
Utiliser le au niveau du bit et de l'opérateur
&
:OriginalL'auteur Oded
vous pouvez dire:
OriginalL'auteur Felice Pollano
Et avec la valeur décalée, le bit est défini si la réponse est non nulle.
Si vous faites un peu beaucoup utiliser une constante pour (1 << BitToTest), si beaucoup de choses, mais différents bits, un tableau statique à regarder jusqu'à 2 ^ BitToTest.
OriginalL'auteur Tony Hopkinson
De plus, mais peut-être pas mieux, vous pouvez utiliser le BitVector32 structure.
OriginalL'auteur Ray