AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Warum "OR" und nicht "AND" ?

Ein Thema von Pseudemys Nelsoni · begonnen am 10. Jul 2004 · letzter Beitrag vom 20. Okt 2004
Antwort Antwort
Seite 3 von 4     123 4      
Benutzerbild von negaH
negaH

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

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

  Alt 11. Jul 2004, 14:13
Boolsche Algebra heist das eine Operation mit ZWEI Operanden nur EIN Resultat liefert.

Du verwechselst das OR/AND mit dem sprachlichen Oder/Und, aber OR/AND haben damit NICHTS zu tun.

Für dich ist 12 Euro UND 13 Euro = 25 Euro du setzt für das UND das PLUS ein.
Beim ODER klappt dies dann nicht mehr denn 12 Euro ODER 13 Euro sind ?? Aus Zwei Operanden entstünden ein Resultat mit ZWEI Werten !!.

Boolsche Algrebra sagt aber:

Wenn Schalter A = ein UND Schalter B = ein dann Lampe leuchtet.
Wenn Schalter A = aus UND Schalter B = ein dann Lampe dunkel.
Wenn Schalter A = aus UND Schalter B = aus dann Lampe dunkel.
Wenn Schalter A = ein UND Schalter B = aus dann Lampe dunkel.

Somit sind Schalter A und Schalter B in Reihe geschaltet. Schalter A UND Schalter B müssen ein sein damit die Lampe leuchtet.

Wenn Schalter A = ein ODER Schalter B = ein dann Lampe leuchtet.
Wenn Schalter A = ein ODER Schalter B = aus dann Lampe leuchtet.
Wenn Schalter A = aus ODER Schalter B = ein dann Lampe leuchtet.
Wenn Schalter A = aus ODER Schalter B = aus dann Lampe dunkel.

Somit eine Paralellschaltung der Schalter. Einer ODER beide Schalter können ein sein damit die Lampe leuchtet.

Du möchtest nun verschiedene BITs vermischen, du möchtest also das im Resultat die entsprechenden Flags als geminesamme Summe aller gesetzt sind. Dies ist eine ODER Operation.

Dein Denkfehler liegt also darin das du die Operatoren AND/OR der Boolschen Algrebra mit den Operatoren +/- der normalen Algebra verwechselst. Anders ausgedrückt: du verstehst nicht die Boolsche Algebra und setzt alles mit deiner Normalmathematik gleich.


Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#22

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

  Alt 19. Okt 2004, 02:15
ich glaub ich werds nichtmehr schnallen *g* aber trotzdem nochmal ne frage:

Zitat:
Für dich ist 12 Euro UND 13 Euro = 25 Euro du setzt für das UND das PLUS ein.
Beim ODER klappt dies dann nicht mehr denn 12 Euro ODER 13 Euro sind ?? Aus Zwei Operanden entstünden ein Resultat mit ZWEI Werten !!.

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
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#23

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

  Alt 19. Okt 2004, 07:11
Hallo,

Zitat von Pseudemys Nelsoni:
wieso ist: "01 and 10 = 00" ? für mich wäre das ergebnis "11"....hmm
erstmal mußt du klähren wie das and definiert ist. In Pascal kann man das and sowohl für bitweises als auch logisches UND verwenden. Bitweise heißt man behandlet jede Bit-stelle für sich, also in dem Falle wäre das für das 0. Bit 1 and 0 = 0 und für das 1. Bit 0 and 1 = 0. Was bei den 4 möglichen Bitvariationen für eine bestimmte Operation (wie z.B. and) rauskommt ist in Wahrheitstabellen definiert - und was DU darunter verstehst muß nicht zwangsläufig mit anderen übereinstimmen - es sind definitionen und die kann jeder halten wie ein Dachdecker .

Dann gibt es noch das logische and, welches nur die boolischen Werte vergleicht, also bei and ob beide Seiten true sind. Das ist in Pascal bißchen verschwommen und mehr in C ähnlichen Sprachen verbreitet - dort gibt es extra unterschiedliche Operatoren dafür.
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
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, 08: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
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#25

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

  Alt 19. Okt 2004, 12:59
danke Hagen,

ich glaub nun versteh ichs *g*, nun aber nochmal eine andere frage, wozu gibt es diese "art" der rechnung? ich meine würde das ganze mit z.b +,- etc nicht reichen? ich würde glaub ich immer erst rechnen müssen was überhaupt bei so einer binären rechnung rauskäme.

Danke für deinen Text
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#26

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

  Alt 19. Okt 2004, 13:01
Warum es OR gibt? Einfach:
Code:
11 OR
10 ==
11
Wohingegen
Code:
11 +
10 ==
101
Bitweise und arithmetische Operatoren unterscheiden sich also.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#27

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

  Alt 19. Okt 2004, 13:03
schon, aber statt:

Zitat:
10 or 11
könnt ich doch auch einfach:

Zitat:
10 + 1
rechnen.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#28

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

  Alt 19. Okt 2004, 13:04
Du weisst aber nicht immer, welche Bits gesetzt sind. Mein Beispiel kommt durchaus mal in API-basierten Programmen vor, wenn du dort + neutzen würdest, hättest du am Ende ein Rahmenloses Fenster statt einem Fenster mit extradicken Rand. Um herauszufinde, welche Bits gesetzt sind und welche nicht brauchst du diese Bitweisen Operatoren.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#29

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

  Alt 19. Okt 2004, 13:11
Nehmen wir mal an, du hast einen Wert von 0 bis 255, also 8bit.
Du willst jetzt z.B. das 7te Bit auf High setzen ohne die restlichen Bits zu beeinflussen.

Code:
10010101 or
01000000 =

11010101
oder auch in Delphi
  Wert := Wert or (1 shl 6); Mit Addition würdest du es schwer haben.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#30

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

  Alt 19. Okt 2004, 13:15
Hai Pseudemys,
nehmem wir doch mal andere Zahlen

Code:
    5 = 0101 
    3 = 0011

    5 = 0101 
+   3 = 0011
    --------
    8 = 1000

    5 = 0101 
OR 3 = 0011
    --------
    7 = 0111

    5 = 0101 
AND 3 = 0011
    --------
    1 = 0001
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz