Forum: Mikrocontroller und Digitale Elektronik 1 Bit ändern?


von Rudi (Gast)


Lesenswert?

Hy

wie kann ich in C nur 1 Bit ändern ohne die anderen zu verändern?

z.B.:

aus    0b00010001
soll   0b00000001
will hier das 4.Bit von 0 auf 1 setzen...

klar ich kann i=0x01 zuweisen aber dann werden alle anderen auch 
gesetzt!

von Stefan (Gast)


Lesenswert?


von Thorsten (Gast)


Lesenswert?

i = 0x01;             // 00000001

i |= 0x10;            // 00010001

von Peter D. (peda)


Lesenswert?

> aus    0b00010001
> soll   0b00000001
1
i &= ~(1<<4);

Peter

von Rudi (Gast)


Lesenswert?

also es sollte in beide Richtungen klappen

also

von 0x001
zu  0x000

aber auch

von 0x000
zu  0x001

.................................

mit |= klappt es ja nur von 0-1 und nicht 1-0 oder?

WAS MACHT DAS ENTSCHLÜSSELT?

i &= ~(1<<4);

wofür ist die Negation?
heißt die 1 setze auf 1?
die 4 steht für die 4 Stelle?



von Ben (Gast)


Lesenswert?

0x11 := 0x01 OR 0x10;
0x01 := 0x11 AND 0x0F;

von Rudi (Gast)


Lesenswert?

also ich will einfach die Ports an & ausschalten...

PORTB=....

von Ben (Gast)


Lesenswert?

Rudi,
schau Dir an was AND & OR machen.

von Dirk (Gast)


Lesenswert?

3 bauteile zu aufwendig?

von Bernhard (Gast)


Lesenswert?


In meinem Lehrbuch steht:

^=

ist ein bitweises XOR mit Zuweisung. Also:

Variable ^= 0x01

macht aus

000 -> 001

und aus

001 -> 000


von Obelix (Gast)


Lesenswert?

Schau dir einfach mal die erste Antwort an!

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
Noch kein Account? Hier anmelden.