Logische Operatoren mit Zahlen größer 1

OP Persönliche Seite #1135213
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
#1135226
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"
Gast #1135227
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
Gast #1135229
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..
Gast #1135230
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.
#1135233
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.
Gast #1135239
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren