Forum: Mikrocontroller und Digitale Elektronik Ergebnis von b = a ^ (b & c)


von ratlosER (Gast)


Lesenswert?

und noch eine Frage :


a = 11111111
b = 00000000
c = 00000100


b = 11111111 xor (00000000 & 0000010)

b = 11111111 xor 00000000

b = 11111111


Ist das soweit richtig verstanden ?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?


von ratlosER (Gast)


Lesenswert?

:-) nein. Die Schule liegt schon einige Jahrzehnte zurück.
Versuche hier nur einen Code zu verstehen.

von amateur (Gast)


Lesenswert?

Für's Verständnis kein sehr gutes Beispiel:

"Egal-Was" UND "Null" ist immer Null

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

ratlosER schrieb:
> :-) nein. Die Schule liegt schon einige Jahrzehnte zurück.
> Versuche hier nur einen Code zu verstehen.

Hmmmm... In welcher Sprache ist der Code denn? Weil... in C stimmt die 
Annahme nicht. Ein paar der Konstanten gelten als Oktalzahlen, ein paar 
als Dezimalzahlen.

von ratlosER (Gast)


Lesenswert?

b ist nur ein temp zustand. Ist meine Berechnung denn richtig?

von ratlosER (Gast)


Lesenswert?

Markus W. schrieb:
> Hmmmm... In welcher Sprache ist der Code denn? Weil... in C stimmt die
> Annahme nicht. Ein paar der Konstanten gelten als Oktalzahlen, ein paar
> als Dezimalzahlen.

Kannst du das bitte erklären ? Code ist in C

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

ratlosER schrieb:
> Kannst du das bitte erklären ? Code ist in C

Schau mal hier:
http://de.wikipedia.org/wiki/Oktalzahl#Kennzeichnung

Die Zahl 10 ist gleichbedeutend mit 0xa und 012.

von Bernie (Gast)


Lesenswert?

Toll, hier sind wieder die Besserwisser am "helfen"...

Beim Betrachten deines Problems scheint es klar, dass es
sich um Binärzahlen handeln soll.
Aber in C kann man keine Binärzahlen als Eins-Null-Folge
eingeben.

Definiert sind nur:
123e4 = 1230000 (dez),
037 = 7 + 3*8 = 32 (dez) - Beginnt mit NULL, also Oktal,
0x1234 = 4660 (dez) - Beginnt mit 0x, also Hexadezimal.

0b10101100 ist zwar beim AVR-Assembler definiert, jedoch nicht
in Standard-C.


Dein Rechnung scheint mir OK, deine Schreibe versteht kein
Compiler...

von Karl H. (kbuchegg)


Lesenswert?

ratlosER schrieb:

> Ist das soweit richtig verstanden ?


Und ehe das nächste Beispiel kommt.

* Du hast es offensichtlich mit Bitoperationen zu tun.
  D.h. jeweils gleiche Stellen werden ohne Ansehen der anderen
  Stellen Bitverknüpft

* UND (&): Das Ergebnis ist genau dann 1, wenn A UND B 1 waren

* ODER (|): Das Ergebnis ist genau dann 1, wenn A ODER B ODER beide
            1 waren

* NICHT (~): AUs 1 mach 0, aus 0 mach 1

* XOR (^): Das Ergebnis ist genau dann 1, wenn A ODER B, aber nicht
           beide 1 waren

* Klammern werden genau so aufgelöst, wie man es von der Aithmetik
  gewohnt ist: von innen nach aussen


Und jetzt widersteh einfach der Versuchung, beim nächsten mal schon 
wieder zu fragen.
Denn: Wenn das ganze aus Programmcode stammt, dann steckt da sowieso 
eine Absicht dahinter und du musst diese Absicht ergründen um den Code 
zu verstehen. Es kann helfen, ein paar Beispiele durchzuspielen aber 
letzten Endes bist du hinter etwas größerem her.

von Helmut S. (helmuts)


Lesenswert?

@ratlosER

Dein Ergebnis ist richtig. Hier ist ein Beispiel für C.
http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/BitOp/bitwise.html

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.