Hi, ich habe eine Verständnisfrage: Im Tutorial http://www.mikrocontroller.net/articles/Bitmanipulation steht geschrieben: << = Links schieben (Bsp: a<<b ist das gleiche wie a * 2^b) desweiteren steht dort geschrieben: #define MEINBIT0 0 #define MEINBIT1 1 #define MEINBIT2 2 PORTB |= ((1 << MEINBIT0) | (1 << MEINBIT2)); // setzt Bit 0 und 2 in PORTB auf "1" (1 << n) : Zuerst wird durch die '<<'-Ausdrücke eine "1" n-mal nach links geschoben. Dies ergibt somit (in Binärschreibweise) 0b00000001 für (1 << MEINBIT0) und 0b00000100 für (1 << MEINBIT2). Aber die Beiden Verfahren sind doch nicht gleich, rechne ich nach dem 1. Beispiel: 1*2^0 | 1*2^2 somit wäre Bit 1 und Bit 4 betroffen, nicht Bit 0 und Bit 2 Kann mir jemand auf die Sprünge helfen? Danke, gruß Stefan
Stefan schrieb: > 1*2^0 | 1*2^2 > somit wäre Bit 1 und Bit 4 betroffen, nicht Bit 0 und Bit 2 > > Kann mir jemand auf die Sprünge helfen? Es sind Bit 0 und 2 betroffen, Bit 2 hat aber den Wert 4 ( dezimal ), das ist dein Fehler.
1*2^0 | 1*2^2 = 1 | 4 in binär ist das dann: 0001 | 0100 = 0101 Man sieht also, dass bit 0 und bit 2 gesetzt wird.
1*2^0= 1 = 0b00000001; Bit 0 ist gesetzt 1*2^2= 4 = 0b00000100; Bit 2 ist gesetzt
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.