Hallo, es geht um das AVR-Studio und C. Ich habe eine 16-Bit-Variable (s.u.), bei der die beiden "kleinsten" Bits nur Rauschen erzeugen. Deshalb möchte ich sie generell vor der Weiterverarbeitung löschen, also auf Null setzten. uint16_t x ; ... x = "beliebige 16-Bit-Zahl" ; Wie kann man jetzt bei der Zahl x per Bitmanipulation die letzten beiden Bits immer auf Null setzen/halten???
Ich will dich nur in die richtige Richtung schupsen: Welche logische Operation könnte Dir helfen?
Danke für die Antworten! @Tobias: die &-Operation, alle gesetzten Bits werden übernommen. Also dezimal wäre es x = x & 65532; anders geschrieben x &= 65532; Ist das so korrekt (geschrieben)?
Ich schrieb: > Ja, aber hexadezimal ist es viel leichter lesbar. Ist mir eben auch kar geworden ;O) Danke Leute!!!
Ich schrieb: > Ja, aber hexadezimal ist es viel leichter lesbar. Noch leichter lesbar wird es, wenn man die Bits angibt, die man löschen möchte.
1 | x = x & ~(0x0003); |
oder
1 | x = x & ~((1 << BIT1) | (1 << BIT0)); |
Andererseits könnte man hier auch den ADC(?)-Wert einfach durch vier teilen, muss dann aber bei der Weiterverarbeitung die geringere Auflösung entsprechend berücksichtigen.
Oder die Bits einfach wegshiften: x = (x >> 2); Grüße, Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.