Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#24

Re: Warum "OR" und nicht "AND" ?

  Alt 19. Okt 2004, 07:16
Hm, @fiasko: du machst das jetzt komplizierter als es ist.

In fact gibt es eben keinen Unterschied zwischen der einem "bitweisen" und "logischen" UND. Beides ist identisch. Der einzigste Unterschied ist die Frage nach der benutzen Menge. Während eine "logisches" UND, das was du als einfache boolsche Verknüpfung eines Bits mit JA/NEIN vestehst, eben nur ein Ja/NEIN Kanal darstellt, sind bei Bitweisen Verknüpfungen von zb. Bytes/Integers usw. einfach 8/16/32 solcher "Kanäle" vorhanden.

Betrachten wir also die kleinste mögliche Menge in der Boolschen Algebra -> das Bit.
Ein Bit kann nur zwei Zustände speichern -> False oder True, 0 oder 1, Falsch oder Wahr, Aus oder Ein.

Die Frage nach dem UND -> AND, ODER -> OR usw. zielt nun auf die Rechenoperationen in der Boolschen Algebra ab. So wie es in der normalen Algebra die Addition, Subtraction usw. von natürlichen Zahlen gibt.

Die Eingangsfrage bezog sich auf ein Denkproblem, in dem eben diese verschiedenen Operationen übergreifend übertragen wurden, was aber definitiv falsch ist.

UND/AND bedeutet das bei Operanden TRUE sein müssen damit das Resultat ebenfalls TRUE ergibt.
ODER/OR bedeutet das einer der beiden Operanden oder beide TRUE sein können damit das Resultat TRUE ergibt.

Das UND/AND bezieht sich eben nicht auf ein UND wie in dem Satz: "ich habe 1000 Euro und 2000 Dollar auf meinem Konto". Der Denkfehler liegt darin den allgmeinen Sprachgebrauch des UND/AND Wortes in die Boolsche Algebra übertragen zu wollen.


Zitat:
wieso entstünden da 2 werte? für mich würde da kein wert entstehen weil ein ODER einfach nicht möglich für mich ist
Sehr gut, den ersten Schritt hast du nun getan, und du hast erkannt das die ODER Operation eben nicht anwendbar ist. Das gleiche gilt für jede Boolsche Operation die du "gedanklich" falsch in die normale Arithmetik mit natürlichen Zahlen übertragen willst.

Wenn du 3 + 2 addierst dann kommt 5 raus, eben weil 3,4,5 Zahlen sind.
Wenn du 3 or 2 oder verknüpfst dann kommt 3 raus, eben weil 3,2 Bitfelder sind, sozusagen Boolsche Mengen in parallel.

Code:
                                            3210
Die 3 wird im Rechner binär gespeichert als 0011.
Die 2 wird im Rechner binär gespeichert als 0010.
                                            ---- 
Oder verknüpft ergib das                   0011 -> 3
                                            ---- 
Und verknüpft ergibt das                   0010 -> 2
Betrachte obige Bits mal als Spalten-Operation von Rechts nach Links.
Es gibt die Spalten 0,1,2,3 -> darunter die Bitzustände für jeweils die Zahlen 3 und 2.

Die Spalte gibt die Wertigkeit des Bits ansich an. Also Spalte
0 -> 2^0 == 1
1 -> 2^1 == 2
2 -> 2^2 == 4
3 -> 2^3 == 8

Wenn das jeweilige Bit in der Spalte 1 ist wird dessen Wertigkeit addiert, und somit kommt man bei der binären Darstellung der Zahl 3 -> 0011 auf 0 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0.

Wird aber nun Boolsch verküpft interessierten an diesen Zahlen 3,2 eben nur die Bits der einzelnen Spalten UNABHÄGNIG von den restlichen Spalten. Man wendet also die Boolschen Operation immer nur auf eine Bitspalte mit gleicher Wertigkeit an.

Im obigen Beispiel eine Oder Verküpfung geht man die Spalten 0,1,2,3 von Rechts nach Links durch und wendet das OR für die einzlenen Bits der Zahlen 3 und 2 an.


Code:
         Zahl 3      Zahl 2   resulat
Spalte
   0       1     or   0        1
   1       1     or   1        1
   2       0     or   0        0 
   3       0     or   0        0

ergibt: 0011 -> 3

         Zahl 3      Zahl 2   resulat
Spalte
   0       1     and  0        0
   1       1     and  1        1
   2       0     and  0        0 
   3       0     and  0        0

ergibt: 0010 -> 2
AND -> UND -> Im Resultat steht nur eine 1 wenn im Operand A und B eine 1 steht.
OR -> ODER -> Im Resultat steht eine 1 wenn im Operand A oder B oder A und B eine 1 steht.
NOT -> NICHT -> Im Resulat steht eine 1 wenn im Operand eine 0 steht.


Die Worte UND,ODER,NICHT,OR,AND,NOT,XOR stellen also keine semantischen Worte wie du sie normalerweise benutzt dar, sondern sind wie +,-,*,/ einfach mathematische Operationen. Wenn +,-,*,/ Rechenoperation mit natürlichen Zahlen sind, also in der Arithmetik, dann sind AND,OR,NOT,XOR eben die Rechenoperationen in der Boolschen Algebra. UND bedeutet also nicht +.

Gruß Hagen
  Mit Zitat antworten Zitat