Disons que j'ai une variable int n = 8. Sur la plupart des machines, ce sera une valeur de 32 bits. Comment puis-je obtenir seulement les 8 bits inférieurs (octet le plus bas) de ceci en binaire? Aussi, comment puis-je accéder à chaque bit pour savoir ce que c'est? Ma question est lié à CComment puis-je obtenir les 8 bits inférieurs d'int?
Répondre
unsigned n = 8;
unsigned low8bits = n & 0xFF;
note quelques petites choses:
- Pour les opérations de manipulation de bits, utilisez toujours les
unsigned
types - bits peuvent être extraits de chiffres à l'aide de masquage binaire avec l'opérateur
&
- Pour accéder au bas 8 bits le masque est
0xFF
car en binaire il a ses 8 bits bas activés et le reste 0 - Les 8 bits bas du nombre 8 sont ... 8 (pensez à un instant)
Pour accéder à un certain nombre peu, disent que le bit k
th:
unsigned n = ...;
unsigned kthbit = (1 << k) & n;
Maintenant, kthbit
sera 0 si le si le bit k
e du n
bit k
e de n
est 0, et un nombre positif (2**k
) est 1.
Utilisation arithmétique binaire pour masquer les 8 bits les plus bas:
unsigned char c = (x & 0xFF);
Pour accéder à la n-ième bit le plus bas, l'équation est (x & (1 << n))
(n de zéro indique le bit le moins significatif) . Un résultat de zéro indique que le bit est clair et un non-zéro indique que le bit est défini.
Vous pouvez t si un peu l'Est particulier est situé dans un numéro à l'aide < < et &, à savoir:
if (num & (1<<3)) ...
testera si le quatrième bit est défini ou non.
De même, on peut extraire seulement les 8 bits inférieurs (comme un nombre entier) en utilisant & avec un nombre qui a seulement les 8 bits les plus bas fixés, à savoir num & 255
ou num & 0xFF
(en hexadécimal).
La meilleure méthode consiste à utiliser l'opérateur logique de bits & avec la valeur appropriée.
Donc, pour les 8 bits inférieurs:
n & 0xFF; /* 0xFF == all the lower 8 bits set */
Ou en règle générale:
n & ((1<<8)-1) /* generate 0x100 then subtract 1, thus 0xFF */
Vous pouvez combiner avec l'opérateur de décalage de bits pour obtenir un peu spécifique:
(n & (1<<3))>>3;
/* will give the value of the 3rd bit - note the >>3 is just to make the value either 0, or 1, not 0 or non-0 */
- 1. Encodage .Net 8 bits
- 2. Conversion UTF-8 à Ascii (8 bits) codée en pourcentage
- 3. .NET - Privilèges d'application inférieurs
- 4. ImagExpress Version 8 sur 64 bits
- 5. Comment convertir un IplImage * OpenCV 8 bits en un IplImage * 32 bits?
- 6. trouver tous les nombres inférieurs à x dans un BST
- 7. Comment activer les couleurs de plus de 8 bits dans Terminal.app?
- 8. Comment les données bitmap 1 bit sont-elles converties en 8 bits (24bpp)?
- 9. Problème C++ Stuffing 8 bits dans un char
- 10. wxWidgets bitmap d'affichage d'un tableau de 8 bits
- 11. Comment "concaténer" deux int de 32 bits pour obtenir une longueur de 64 bits en Python?
- 12. python convert 12 bits image codée dans une chaîne à 8 bits png
- 13. accessoires Rails codant pour erreur "codages de caractères incompatibles: ASCII 8 bits et UTF-8"
- 14. Restreindre le vocabulaire de la taxonomie pour les rôles inférieurs
- 15. Implémentation d'un nombre entier de 64 bits pour un microcontrôleur 8 bits
- 16. bas de gamme grand 1 bit tiff à 8 bits en niveaux de gris/24 bits
- 17. Hexadécimal à un tableau non signé 8 bits dans VB.NET
- 18. Utilisation d'AudioRecord avec codage 8 bits en android
- 19. Obtenir les bits d'octet sous forme de chaîne
- 20. Sous-échantillon audio pcm 16 bits à 8 bits en android
- 21. Installation de Coldfusion 8 32 bits sur une machine 64 bits - des problèmes?
- 22. Comment copier les X derniers bits?
- 23. Générer k nombres distincts inférieurs à n
- 24. Cognos 8 SDK: Comment obtenir des sous-groupes d'un groupe?
- 25. Conserver les données de la conversion de 27 bits à 19 bits
- 26. Aide Comprendre les conversions en virgule flottante 8 bits avec décimales et binaires
- 27. Comment puis-je obtenir les 48 bits les moins significatifs d'un long format hexadécimal?
- 28. IE 8 installer comment obtenir la version 8.0.6001.18702
- 29. Comment obtenir DBIx :: Class pour assembler avec UTF-8?
- 30. Comment j'imprime les caractères UTF-8 C++?
le premier bit signifie-t-il le bit "0" ou le bit "1"? –