Hallo, z.B.: PORTD = 0b01011000, dabei soll das obere nibble: 0101 unverändert bleiben und das untere nibble: 1000 bekommt neue Bits zugewiesen z.b: 1010. das Ergebnis wäre: 0b01011010. wie maskiert/shiftet man das am effektivsten? ...ich bekomme es gerade nicht hin (Sprache C) Gruß
Gast
#4579228
In welcher Sprache willst Du das schreiben? Kannst Du die Sprache? Unabhängig von der Sprache, der sicherste Weg: unter 4 Bits ausblenden = and mit 0000 oder mit dem gewünschten Bitmuster
Siehe Bitmanipulation.
shift schrieb: > unter 4 Bits ausblenden = and mit 0000 AND mit 0000 ist der sicherste Weg, alle Bits auf 0 zu setzen... ;)
Da du nicht weißt welche Bits du setzen willst, musst du die unteren 4 Bit zuerst löschen und dann die neuen setzen: Unteren 4 Bits löschen: PORTD &= ~(0x0F); bzw. PORTD &= 0xF0; Unteren 4 Bits setzen: PORTD |= neueBits;
Thomas Elger: ja das wollte ich auch gerade schreiben.
IS P. schrieb: > Da du nicht weißt welche Bits du setzen willst, musst du die unteren 4 > Bit zuerst löschen und dann die neuen setzen: > > Unteren 4 Bits löschen: > PORTD &= ~(0x0F); > bzw. > PORTD &= 0xF0; > > Unteren 4 Bits setzen: > PORTD |= neueBits; Vielen Dank so funktioniert es und ich hab endlich die Vorgehensweise verstanden. Super!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.