www.mikrocontroller.net

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


Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Pascal (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.
230 -->          11100110b
195 -->          11000011b
(bitweise UND)   ========
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.

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups zu langsam.

Autor: Nils S. (fitec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vielen Dank, da habe ich mal wieder was dazu gelernt.

Mfg Nils

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.