AVR: Die letzten beiden Bits löschen

Gast #3175149
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???
Gast
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)?
Persönliche Seite
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.