Comment puis-je extraire les bits de 32 bits en nombre

Je n'ai pas beaucoup de connaissances en C et im coincé avec un problème comme l'un de mes collègue est en congé.

J'ai un nombre 32 bits et j'ai pour extraire les bits à partir d'elle. Je l'ai fait passer par un petit nombre de threads, mais im toujours pas clair comment le faire. Je vous serais très obligé si quelqu'un peut m'aider.

Voici un exemple de ce que je dois faire:

Supposer nombre hexadécimal= 0xD7448EAB.
En binaire= 1101 0111 0100 0100 1000 1110 1010 1011
J'ai besoin d'extraire de 16 bits, et la sortie de cette valeur. Je veux bits 10 à 25.

La baisse de 10 bits (Décimal) sont ignorés. c'est à dire,10 1010 1011 sont ignorés.

Et la partie supérieure de 6 bits (Dépassement de capacité) sont ignorés. c'est à dire, 1101 01 sont ignorés.

Les 16 bits de données à la sortie, ce qui est 11 0100 0100 1000(chiffres en italique sont nécessaires à la sortie).

C'était un exemple, mais je continue à recevoir de différents nombres hexadécimaux tout le temps et j'ai besoin d'extraire les mêmes bits comme je l'ai expliqué.

Comment puis-je résoudre ce problème?

Merci.

Pour cet exemple, vous devriez sortie 1101 0001 0010 0011, qui est 0xD123, ou 53,539 décimal.

  • Avez-vous besoin de tout garder en forme binaire? Ou voulez-vous être en mesure de convertir la valeur hexadécimal en binaire, puis de convertir la valeur binaire en une chaîne de caractères. Vous pouvez ensuite il suffit de prendre la sous-chaîne qui vous intéresse, et de la convertir en binaire/hexadécimal en tant que de besoin.
  • Et (& operator) votre valeur avec un masque avec les bits set qui vous intéresse, puis le déplacement à droite le résultat (>> opérateur) pour les aligner avec les bits à zéro.
InformationsquelleAutor user3267877 | 2014-02-03