www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitmanipulation, Schieberegister - Verständnisfrage


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: hohoho (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Josef D. (jogedua)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1*2^0= 1 = 0b00000001; Bit 0 ist gesetzt
1*2^2= 4 = 0b00000100; Bit 2 ist gesetzt

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar,
vielen Dank für die Hilfe

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.