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! 😋


  • Mod

    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.


Log in to reply