www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik übersetzung von c-code


Autor: unwissender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich brauche mal kurz eure Hilfe, ich habe diese Zeile C-Code 
gefunden, in einem Programm eines Bekannten, der leider nicht mehr unter 
uns weilt, deshalb kann ich ihn nicht fragen
if ((anweisung & 0x80) == 0x00)

Die inneren Klammern bedeuten, bzw kontrollieren, ob das 7. Bit in 
"anweisung" gesetzt ist, so weit bin ich mit Hilfe des forums schon 
gekommen ;) jetzt wäre meien Interpretation, des Rests:

Wenn das 7. Bit gesetzt ist in "anweisung" (die inneren Klammern also 
wahr sind) DANN vergleicht er ob sie 0x00 (also false?) sind?

Dann könnte ichs doch auch so schreiben, oder?
if !(instruc & 0x80)

Danke für eure Hilfen!

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das & ist eine Bitweise UND Verknüpfung. Das bedeutet hier, daß das Bit 
7 auf 0 geprüft wird.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn das 7. Bit gesetzt ist in "anweisung" (die inneren Klammern also
> wahr sind) DANN vergleicht er ob sie 0x00 (also false?) sind?

Spitzfindigkeit. Die Operation in der inneren Klammer überprüft nicht, 
ob das Bit gesetzt ist, sie isoliert den Wert des Bits aus dem 
Parameter.

Ob das Bit gesetzt ist oder nicht, wird erst mit dem darauffolgenden 
Vergleich bestimmt.


> Dann könnte ichs doch auch so schreiben, oder?
>
>  if !(instruc & 0x80)

Im Prinzip ja, nur so:
if (!(instruc & 0x80))

Vergleiche mit 0 lassen sich immer auf diese Art ausdrücken.

Autor: Stephan Storm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, aber noch ne klammer drum:

if(!(instruc & 0x80))

Autor: Stephan Storm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry, ihr seid zu schnell für mich...

Autor: laserandi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0x80 = Bit 7 ???
Ich würde sagen es handelt sich hier um Bit 8, da 0x80 = 128 ist.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
laserandi schrieb:
> 0x80 = Bit 7 ???
> Ich würde sagen es handelt sich hier um Bit 8, da 0x80 = 128 ist.

Normalerweise fängt man bei Bits bei 0 an zu zählen, also Bit 7.
(passt ja auch besser zur 128, denn 128 = 2 hoch 7)

Autor: Peter S. (psavr)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@laserandi: Bit 7 ist das 8. Bit! (8 Bit => Bit0...Bit7)

Autor: unwissender (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch allen !!!

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.