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


von unwissender (Gast)


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
1
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?
1
if !(instruc & 0x80)

Danke für eure Hilfen!

von Gast (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


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?
>
1
>  if !(instruc & 0x80)

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

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

von Stephan Storm (Gast)


Lesenswert?

ja, aber noch ne klammer drum:

if(!(instruc & 0x80))

von Stephan Storm (Gast)


Lesenswert?

sorry, ihr seid zu schnell für mich...

von laserandi (Gast)


Lesenswert?

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

von Stefan E. (sternst)


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)

von Peter S. (psavr)


Lesenswert?

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

von unwissender (Gast)


Lesenswert?

Danke euch allen !!!

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
Noch kein Account? Hier anmelden.