C Bitmasken
-
Hallo,
mein Problem:
Ich habe eine 32-bit Adresse, wo ich Bit 16-22 benötige, damit ich dann weitere Berechungungen machen kann ..
Klar ist mir, dass ich zuerst 15 bits nach rechts shiften muss, aber, wie ich dann die höherwertigen Bits (ab 23) auf 0 bekomme, verstehe ich nicht ganz.
Hoffe, es kann mir hier jmd. helfen, danke!
-
Das Wort Bitmaske kennst du ja schon. Nun musst du dir eine basteln: Die Binärzahl 0b111111 (also 63) verschiebst du 16 Stellen nach links und hast somit eine Binärzahl, die 1 auf den Stellen 16-22 ist und 0 überall sonst. Diese Zahl UND dein Wert (also &) sind dann logischerweise die Bits 16-22 deines Wertes. Eventuell musst du das Ergebnis noch 16 Stellen nach rechts verschieben, je nachdem, was du genau damit machen möchtest.
-
du kannst auch einfach hexadezimalzahlen verwenden. bit 22 - 20 sind 3 bits von 1, bit 19 bis 16 sind 4 bits von 1, bit 15 bis bit 0 sind vier mal vier bit von 0.
macht also 7F0000.