hallo, wie kann man in C einzelne Bits von einer Variablen (Typ char) einer anderen Variablen (Typ char) zuweisen? z.B.: char Var1,Var2,Var3; Bit 0 von Var 1 = Bit 2 von Var 3 Bit 1 von Var 1 = Bit 7 von Var 2 Bit 2 von Var 1 = Bit 6 von Var 2 ... mfg Tom
Nur umständlich. Var1 = (Var1 & 0xFE) | ((Var3 >> 2) & 1); Var1 = (Var1 & 0xFD) | ((Var2 >> 6) & 2); Var1 = (Var1 & 0xFB) | ((Var2 >> 5) & 4); Der erste Ausdruck maskiert die bei der Zuweisung nicht zu verändernden Bits in Var1 aus, der zweite Ausdruck verschiebt das auszuwertende Bit in Var3 bzw. Var2 an die korrekte Bitposition und maskiert die anderen Bits aus. Werden alle 8 Bits von Var1 auf diese Art und Weise gesetzt, dann kann der erste Ausdruck komplett entfallen, wenn Var1 vorher mit 0 initialisiert wird.
> Var1 = (Var1 & 0xFE) | ((Var3 >> 2) & 1);
und statt 0xFE kann man hier auch ~0x01 schreiben, das etwas einfacher
zu lesen/verstehen ist (-> Geschmackssache). Also:
Var1 = (Var1 & ~0x01) | ((Var3 >> 2) & 0x01);
----, (QuadDash).
Ich würde eine Routine schreiben, die als 1.Parameter das Byte bekommt, dessen Bit abgefragt wird, und als 2.Parameter welches Bit geprüft werden soll. Der Rückgabe ist entweder 0 oder 1. Einer zweiten Routine kann man dann das Ergebnis zusammen mit dem zu modifizierenden Bit und dem Byte selbst übergeben. Gruß Ralf
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.