Forum: Mikrocontroller und Digitale Elektronik Logische Operatoren mit Zahlen größer 1


von Nils S. (fitec) Benutzerseite


Lesenswert?

Hallo,
ich habe mal eine allgemeine Frage zum rechnen mit logischen 
Operatoren(mehr Mathematik):
Ich kenne die logischen Operatoren And, Or, Not, Nand, Nor, Xor usw.
Beispiel: Eine Operation mit And ist immer dann wahr, wenn beide (alle) 
Operanden wahr sind.
Z.B.: 1 und 1 wärn beide stehen beide für wahr, also ist das Ergebnis 
auch wahr.
Was passiert jetzt aber, wenn die Operanden größer 1 sind, aso zum 
Beispiel:
230 und 195 Welches Ergebnis kommt dann heraus?
Gibt es da irgendwelche Regeln?
Danke schon mal im Vorraus. (sry, wenn es eine Anfängerfrage ist)

Gruß Nils

von Klaus F. (kfalser)


Lesenswert?

Du vermischst ein bischen Logik und C Programmiersprache.

In der Logik gibt es nur wahr und falsch, dort funktionieren die 
Operationen wie man sie sich vorstellt.

Für die C Programmiersprache, welche leider keine Datentypen für wahr 
und falsch hat, zählt alles was 0 ist als false und alles was nicht 0 
ist als wahr.
230 und 195 ist somit "wahr"

von Pascal (Gast)


Lesenswert?

Wenn du mit logischen Operatoren arbeitest (rechnest) gibt es nur 1 und 
0. Zahlen können allerdings binär dargestellt werden und wenn du mit 
diesen rechnen willst, brauchst du einen Volladierer, der aus mehreren 
logischen Gattern besteht. Schau dazu mal bei Wikipedia nach.

Gruss
Pascal

von Gast (Gast)


Lesenswert?

Man könnte es Binär sehen, dann wäre es:

230  => 11100110

und

195  => 11000011

Jede Stelle einzeln verknüpfen ergibt:

11000010 was wiederrum in Dezimalzahlen 194 ist.

Weiß nicht, ob das damit gemeint ist..

von Unbekannter (Gast)


Lesenswert?

In der Boolschen Logik gibt es nur "wahr" und "nicht wahr".

Deine Zeichen "0" und "1" sind nur ein Darstellung für "nicht wahr" und 
"wahr". Genau so gut könntest Du definieren, dass "hund" für "wahr" 
steht und "katze" für falsch. Dann wäre

  hund und katze = katze
  hund und hund = hund

Du hast also keine anderen Zahlen ausser 0 und 1.

von Johannes M. (johnny-m)


Lesenswert?

Nils S. wrote:
> Gibt es da irgendwelche Regeln?
Nein, keine allgemeingültigen. Allein schon deshalb, weil die logischen 
Operatoren zunächst mal nur Wahrheitswerte verknüpfen, und ein 
Wahrheitswert kann nur true (bzw. auf deutsch wahr, 1 bei positiver 
Logik) oder false (falsch, 0) sein, also nur zwei Zustände annehmen. 
Es gibt also auf der Ebene gar keine "Zahlen" (außer 0 und 1 bei der 
Betrachtung). Die Grundfunktionen, die auch aus der Digitaltechnik 
bekannt sind, sind nur für einzelne "Bits" definiert.

Ob es Sinn macht, andere Werte mit logischen Operatoren zu verknüpfen 
und wenn ja, wie diese dann interpretiert werden, hängt von 
anwendungsspezifischen Vereinbarungen ab.

Man kann Zahlen z.B. als Bitfolge darstellen und dann bitweise 
verknüpfen. Dann wird jedes einzelne Bit von Zahl A mit jedem einzelnen 
Bit von Zahl B verknüpft. Ergebnis ist wieder eine Bitfolge, die die 
logischen Verknüpfungen der einzelnen Bitwerte enthält. Deine Zahlen als 
Bitfolge wären z.B.
1
230 -->          11100110b
2
195 -->          11000011b
3
(bitweise UND)   ========
4
Ergebnis         11000010b

Man kann auch "Objekte" direkt logisch verknüpfen, indem man z.B. sagt, 
dass 0 false ist und alles, was nicht 0 ist, true (was z.B. in vielen 
Programmiersprachen so gemacht wird). Wenn Du da z.B. Dein obiges 
Zahlenbeispiel nimmst und "230 UND 195" bildest, dann wäre das Ergebnis 
true, weil beide Operanden von Null verschieden, also true sind. Wie 
dieses true als Ergebnis aussieht, ist wiederum anwendungsspezifisch. 
In C ist true z.B. standardmäßig 1.

von Route_66 (Gast)


Lesenswert?

Hallo!
in der binären Logik gibt es nur 0 und 1, deshalb ja auch binär!
Wenn jetzt mehrstellige binäre Werte mathematisch verknüpft werden 
sollen, erfolgt das immer bitweise. Ich nehme an, die Beispielwerte 
sollen Dezimalzahlen darstellen. Dann mußt Du diese ins Binärformat 
wandeln, (geht bei 230 und 195 als Byte) und diese acht Bits 
mathematisch verknüpfen. Bei logischen Operationen relativ einfach, bei 
arithmetischen (plus, minus, mal, geteilt...) etwas komplizierter - da 
Überträge zwischen den Stellen auftreten können, und das Ergebnis u.U 
nicht mehr in das Ausgangsformat (hier ein Byte) passt.
Bei Programmiersprachen ist es darüber hinaus üblich, Null als "Falsch" 
und alle anderen Werte ungleich Null als "Richtig" zu interpretieren. 
Das funktioniert dann bei allen Formaten, ob Byte, Word, Integer usw.

von Route_66 (Gast)


Lesenswert?

ups zu langsam.

von Nils S. (fitec) Benutzerseite


Lesenswert?

Hallo,
vielen Dank, da habe ich mal wieder was dazu gelernt.

Mfg Nils

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.