Wie kann ich extrahieren von bits von der 32 bit-Zahl

Habe ich nicht viel Kenntnisse in C und im stecken mit einem problem da mein Kollege ist auf Urlaub.

Ich habe eine 32 bit-Zahl, und ich habe zum extrahieren von bits aus. Ich habe Sie durch ein paar threads, aber ich bin mir immer noch nicht klar, wie dies zu tun. Ich wäre sehr dankbar, wenn mir jemand helfen kann.

Hier ist ein Beispiel von, was ich tun muss:

Übernehmen hex-Zahl= 0xD7448EAB.
In binären= 1101 0111 0100 0100 1000 1110 1010 1011
Ich benötige zum extrahieren von 16 bits, und die Ausgabe Wert. Ich möchte die bits 10 bis 25.

Den unteren 10 bits (Dezimal) werden ignoriert. d.h.,10 1010 1011 werden ignoriert.

Und die oberen 6 bits (Überlauf) werden ignoriert. d.h., 1101 01 werden ignoriert.

Den verbleibenden 16 bits der Daten muss der Ausgang ist 11 0100 0100 1000(die zahlen in Kursiv sind nötig, da die Ausgabe).

Dies war ein Beispiel, aber ich werde immer unterschiedliche hex-zahlen, die alle die Zeit und ich brauche, um zu extrahieren die gleichen bits wie ich schon erklärt habe.

Wie löse ich dieses?

Danke.

Für dieses Beispiel würden Sie die Ausgabe 1101 0001 0010 0011, die 0xD123, oder 53,539 dezimal.

Brauchen Sie, um alles in binärer form? Oder würden Sie in der Lage sein, zum konvertieren des hex-Wert in Binär -, dann wandeln Sie die binären Wert in einen string. Sie könnten dann einfach den Teilstring, der Sie interessiert, und wandeln es wieder in Binär - /hexadezimal -, wie gebraucht.
Und (& - operator) Ihren Wert mit einer Maske, mit der die bits gesetzt, die Sie interessiert sind, dann rechts-shift der Folge (>> Betreiber) richten Sie Sie mit bit null.

InformationsquelleAutor user3267877 | 2014-02-03

Schreibe einen Kommentar