Bitmanipulation, Schieberegister - Verständnisfrage

Gast #1636939
Lesenswert?

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
Gast #1636947
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren