Hallo, eine 1 mit DDRX |= (1 << Pxx) setzen ist klar, aber kann man auch mit DDRX|= (0 << Pxx) eine 0 setzen also das bit löschen, oder muss ich da explizit mit DDRX &= ~(1 << Pxx) die 1 löschen? Danke und LG Karl
Kurz überlegen was das | und das & macht und die Frage kannst du dir selbst beantworten. Falls das nicht klappt auf einem Blatt Papier die Bits aufmalen.
hmm und eine kleine antwort zum Thema war zu viel? Ich habe es leider nicht so mit der Digitaltechnik bzw mit der bitweisen Verknüpfung. Vielleicht kann mir jemand sagen, ob das das gleiche ist, wie wenn man die Bits löscht... mfg Karl
karl wrote: > hmm und eine kleine antwort zum Thema war zu viel? > Ich habe es leider nicht so mit der Digitaltechnik bzw mit der bitweisen > Verknüpfung. das solltest du schleunigst ändern, sonst wirst du irgendwann ganz schön gegen die Wand laufen.. was macht wohl ein ODER mit einer NULL ?
karl wrote: > Vielleicht kann mir jemand sagen, ob das das gleiche ist, > wie wenn man die Bits löscht... Nachdenken kann trotzdem nicht schaden:
1 | DDRX|= (0 << Pxx); |
heißt ausgeschrieben
1 | DDRX = DDRX | (0 << Pxx); |
Nun kann man eine 0 um noch so viele Bits nach links schieben: es bleibt eine 0. Also ist es dasselbe wie
1 | DDRX = DDRX; |
Ergo: nein, es geht nicht. Bits werden mit einer UND-Verknüpfung gelöscht,
1 | DDRX &= ~(1 << Pxx); |
ist also einzig die korrekte Form.
karl wrote: > hmm und eine kleine antwort zum Thema war zu viel? Du hast eine Antwort bekommen! > Ich habe es leider nicht so mit der Digitaltechnik bzw mit der bitweisen > Verknüpfung. Dann schau Dir den Artikel Bitmanipulation an!
DDRX: 00000000 Anfangszustand was macht "(1<<3)"?: eine 1 um 3 Stellen schieben: aus 00000001 mach 00001000 was macht "|"?: Bitweise ODER Verknüpfen: 00000000 = DDRX 00001000 = (1<<3) -------- 00001000 = Neuer Wert von DDRX Jetzt das ganze rückwärts: DDRX|= (0 << Pxx) eine 0 um 3 Stellen schieben: aus 00000000 mach 00000000 ODER Verknüpfung: 00001000 = DDRX 00000000 = (0 << Pxx) -------- 00001000 = Neuer Wert (Ist gleich dem alten!) -> Nein man kann son keine Bits Löschen! Statt dessen: Damit die Anderen Bits bleiben wird folgendes gemacht: in 11100011 soll das 2. Bit gelöscht werden: ~(1 << 1) macht ~(00000010) = 11111101 UND Verknüpfung: 11100011 11111101 Nur beim Zu löschenden Bit steht eine 0! -------- 11100001 Hintergrund, Boolsche Algebra, hier nötig: 1 UND 0=0 sowie 1 ODER 0 = 1
vielen dank an euch, echt super beschrieben... besten dank... jetzt weiss ich wie es funktioniert...
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.