Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Was bedeutet AND? (https://www.delphipraxis.net/110735-bedeutet.html)

Fussball-Robby 23. Mär 2008 20:08


Was bedeutet AND?
 
Hey,
ich würde gerne mal wissen, was die Funktion AND bewirkt. NEIN, natürlich nicht das hier:
Delphi-Quellcode:
If (i=1) AND (j=2) Then...;
Sondern das hier:
Delphi-Quellcode:
  CheckBox1.checked:=(i and 1)>0;
CheckBox2.checked:=(i and 2)>0;
CheckBox3.checked:=(i and 4)>0;
CheckBox4.checked:=(i and 8)>0;
CheckBox5.checked:=(i and 16)>0;
Der Code stammt aus einem Programm, das mit einer Platine arbeitet. Auf der Platine gibt es 5 Buttons, und i hat den Input Wert. Wird der erste Button gedrückt, wird 1 zum Wert dazugerechnet, beim zweiten 2 usw.:
Code:
Button1 -> 1
Button2 -> 2
Button3 -> 4
Button4 -> 8
Button5 -> 16
Also kann der Wert zwischen 0 und 31 schwanken. Ich würde jetzt mal gerne wissen, was dieses AND bewirkt.

Mfg

[Edit] Ich weiß, dazu gibt es bestimmt überall Antworten, aber mit dem Suchbegriff AND bin ich hier sowie bei Google und anderen Seiten nicht weit gekommen... :? [/Edit]

mkinzler 23. Mär 2008 20:12

Re: Was bedeutet AND?
 
Ist die binäre Addition.

Namenloser 23. Mär 2008 20:12

Re: Was bedeutet AND?
 
And Verknüpft zwei Werte bitweise.
Das typische Beispiel ist da natürlich:
1 AND 1 = 1
0 AND 1 = 0
usw...
das gleiche macht AND auch bei mehreren Bits
1001 and 1100 = 1000
0111 and 1000 = 0000
etc...

mit OR, XOR und NOT ist es das gleiche.

Fussball-Robby 23. Mär 2008 20:16

Re: Was bedeutet AND?
 
Ich verstehe noch nicht ganz..
Wieso genau ist 1001 and 1100 = 1000?

Die Muhkuh 23. Mär 2008 20:17

Re: Was bedeutet AND?
 
Code:
.
  1 0 0 1
   A N D
  1 1 0 0
---------
= 1 0 0 0
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0

Christian Seehase 23. Mär 2008 20:32

Re: Was bedeutet AND?
 
Moin Robert,

in Deinem Beispiel wird AND als Operator eingesetzt, um jeweils ein bestimmtes Bit von i zu testen.
Die Werte hinter dem AND entsprechen jeweils einer Zweierpotenz (1 = 2^0, 2 = 2^1, 4 = 2^2 usw.)
Ist das jeweilige Bit in i gesetzt, ist der Wert > 0.

Muetze1 23. Mär 2008 20:43

Re: Was bedeutet AND?
 
AND wird vor allem bei Bitmasken eingesetzt und mit diesem Begriff ist es vielleicht einfach zu erklären:

Du hast einen Wert x, der binär so dargestellt wird:

1111

Und du hast einen Wert y, der binär so dargestellt wird:

1010

Wenn wir nun ein binäres UND zwischen den beiden Werten durchführen, dann kommt folgendes raus:

1111 AND 1010 => 1010

Ok, nun tauschen wir einfach mal x aus und ersetzen es durch den binären Wert

0000

Nun das gleiche nochmal, also

0000 AND 1010 => 0000

So, nun eine Erklärung mit der Bitmaske. Der Wert y, also jeweils der zweite Wert stellt eine Maske da, wie eine Lockmaske, nur diesmal geben die gesetzten Bits (also die 1'en) an, welche Bits von dem anderen Wert (x) an der selben Stelle (Wertigkeit) unverändert bleiben und welche immer fest auf 0 gesetzt werden (nicht durchlassen). Von daher der Name Bitmaske: Der Wert y gibt mit den gesetzten Bits an, welche von denen durchgelassen werden (durch die Maske) und welche nicht (also auf 0 gesetzt werden).

Besser verständlich?

dominikkv 23. Mär 2008 20:47

Re: Was bedeutet AND?
 
die checkboxen zeigen also die binäre schreibweise der zahlen an.

Fussball-Robby 23. Mär 2008 21:02

Re: Was bedeutet AND?
 
Danke, ich denke, ich habs jetzt verstanden.
Jetzt nochmal zu dem Code von oben. Nehmen wir an, i ist 6.
Code:
110   AND 001   = 000  -> 1 ist nicht gedrückt [i AND 1]
110   AND 010   = 010  -> 2 ist gedrückt       [i AND 2]
110   AND 100   = 100  -> 3 ist gedrückt       [i AND 4]
0110  AND 1000  = 0000  -> 4 ist nicht gedrückt [i AND 8]
00110 AND 10000 = 00000 -> 5 ist nicht gedrückt [i AND 16]
Passt so. Ich hoffe mal, ich hab das jetzt richtig gemacht...

generic 23. Mär 2008 21:39

Re: Was bedeutet AND?
 
AND wird hier eingesetzt als BITMASKE.

Die Operation ergibt true (1) wenn beide Werte links und rechts vom AND gleich TRUE (1) sind.
Bei Mehrstelligen Werten werden die BIT in der gleichen Spalte verglichen.

Wenn man genau ist, ist AND eine Binär-Multiplikation.

Muetze1 23. Mär 2008 21:40

Re: Was bedeutet AND?
 
Zitat:

Zitat von Fussball-Robby
Passt so. Ich hoffe mal, ich hab das jetzt richtig gemacht...

Alles richtig. Passt wunderbar.

Fussball-Robby 23. Mär 2008 21:50

Re: Was bedeutet AND?
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Fussball-Robby
Passt so. Ich hoffe mal, ich hab das jetzt richtig gemacht...

Alles richtig. Passt wunderbar.

Puh. Danke nochmal :wink:

Luckie 23. Mär 2008 21:57

Re: Was bedeutet AND?
 
Hier noch etwas zum Nachlesen bezüglich Bitmasken: http://www.michael-puff.de/Artikel/2...nuepfungen.php

Fussball-Robby 23. Mär 2008 22:10

Re: Was bedeutet AND?
 
Danke, werd ich mir morgen nochmal angucken, hab da jetzt keine Nerven mehr zu. Ich hab mir jetzt auch noch mal or, xor & not angeguckt und alles verstanden :wink:
ist ja im Prinzip alles total simpel aufgebaut..

Mfg & Gute Nacht

DeddyH 24. Mär 2008 10:16

Re: Was bedeutet AND?
 
Hier kannst Du auch nochmal nachlesen: http://www.delphipraxis.net/internal...t.php?t=113482

Nuclear-Ping 24. Mär 2008 12:21

Re: Was bedeutet AND?
 
Nur mal so ne Frage: Habt ihr das nicht in der Schule? Hatten wir damals im Technik- / Info-Unterricht 7. / 8. Klasse.

mkinzler 24. Mär 2008 12:25

Re: Was bedeutet AND?
 
Wurde vielleicht genauso wie die Mengenlehre wegrationalisiert

Die Muhkuh 24. Mär 2008 12:29

Re: Was bedeutet AND?
 
Als ich auf's Gymnasium gegangen bin, hat unser Mathelehrer Mengenlehre wiederholt. ;)

Mario: Wir hatten auf der Realschule zwar Info (ok, es nannte sich informationstechnische Grundkenntnisse), dort wurde aber nur Word, Excel und PowerPoint ein bisschen behandelt. Wirklich guter Unterricht war das nicht.

Nuclear-Ping 24. Mär 2008 12:33

Re: Was bedeutet AND?
 
Hm, wir hatten die gleiche Lehrerin in Info und in Technik, die kam noch so aus Lochkarten-Zeiten. :mrgreen: Und die hat da zum Glück viel Wert drauf gelegt und uns das Anhand von Schaltkreisen und Lochkarten eingebläut. ^^ Schade eigentlich, dass das heut scheinbar so vernachlässigt wird. :gruebel:

mkinzler 24. Mär 2008 12:35

Re: Was bedeutet AND?
 
Mengenlehre war früher Stoff der Grundschule, man verwendete zwar Mengen aus Kreisen, Dreiecken und verschiedenen Farben die Grundlagen wurden einem aber spielerisch beigebracht.

dajuhsa 24. Mär 2008 12:35

Re: Was bedeutet AND?
 
@muhkuh: das mit dem ITG kenn ich :zwinker:
und heute: "wie kann ich texte in Word ausschneiden und einfügen" :wall:
das würde mich eigentlich mal interessieren, wo es richtigen Info-Unterricht gibt.
ich bin aufm Gymnasium 9te Klasse (ja, ich bin mit 13 in der 9.Klasse...)
und hatte bisher auch nur den blöden ITG-Unterricht und kein richtiges Info.

Ich weiß, ich weiß: OT, ( :warn: an mich ) aber ich musste das jetzt einfach mal loswerden :freak:

Fussball-Robby 24. Mär 2008 18:31

Re: Was bedeutet AND?
 
[OT]Ich denke mal, eigentlich würden wir sowas in Info lernen, aber mein Lehrer ist einfach der größte Idiot der Welt, das muss mal gesagt werden :mrgreen:
Dadurch, dass ich mich schon bevor ich Info hatte mit Programmieren beschäftigt hab, bin ich der einzige in meinem Kurs, der überhaupt was versteht, und das ist jetzt kein Witz.
Mein Lehrer gibt uns fertige Programme, die wir uns dann angucken sollen. Wir arbeiten zwar mit Visual Basic, aber im Prinzip ist das ja das gleiche wie Delphi. Ich glaube, in dem Kurs hat noch keiner was gelernt. Mein Lehrer hatte das mit dem AND irgendwann mal so beiläufig erwähnt, als ob das das Selbstverständlichste auf der Welt wäre (ist es ja auch fast :wink: ), aber irgendwie hat keiner zugehört (wie fast immer) und außerdem hat ders auch nicht erklärt.[/OT]


Zitat:

Zitat von Fussball-Robby
Hey,
ich würde gerne mal wissen, was die Funktion AND bewirkt. NEIN, natürlich nicht das hier:
Delphi-Quellcode:
If (i=1) AND (j=2) Then...;
Sondern das hier:
Delphi-Quellcode:
  CheckBox1.checked:=(i and 1)>0;

Mir ist übrigens aufgefallen, dass das völliger Quatsch war, da das AND bei der If-Abfrage das gleiche ist wie das andere. Da wird ja auch nur überprüft, ob das Bit beim Ergebnis der beiden If-Abfragen gesetzt ist, und nur wenn beide gesetzt sind, ergibt AND = true.

Mfg

Christian Seehase 24. Mär 2008 20:55

Re: Was bedeutet AND?
 
Moin Robert,

Zitat:

Zitat von Fussball-Robby
Mir ist übrigens aufgefallen, dass das völliger Quatsch war, da das AND bei der If-Abfrage das gleiche ist wie das andere. Da wird ja auch nur überprüft, ob das Bit beim Ergebnis der beiden If-Abfragen gesetzt ist, und nur wenn beide gesetzt sind, ergibt AND = true.

Da sag' ich mal Jain.
In der Standardeinstellung ist "Complete boolean evaluation" abgeschaltet. Ein logischer Ausdruck in einer (if)-Abfrage wird also, standardmässig, nur soweit ausgewertet, bis entschieden ist, wie das Ergebnis ausieht. Hast Du da also ein AND stehen, wird der Ausdruck rechts vom AND nicht mehr geprüft, wenn der linke schon false ergibt.
Als Operator verwendet (wie bei (i and 1)) werden hingegen beide Seiten berücksichtigt. Ansonsten würde (i and 1) true ergeben, wenn i ungleich 0 ist, und false, wenn i gleich 0 ist.
In C gibt es dafür auch zwei verschiedene Symbole nämlich && für den Vergleich und & für die bitweise Verknüpfung.

inherited 24. Mär 2008 20:59

Re: Was bedeutet AND?
 
Aber in Delphi gibt es Lazy Evaluation nicht, oder?

Fussball-Robby 24. Mär 2008 21:02

Re: Was bedeutet AND?
 
@Christian Seehase: Ok, dann hab ich da wohl etwas zu weit gedacht..

Mfg

Muetze1 25. Mär 2008 12:07

Re: Was bedeutet AND?
 
Zitat:

Zitat von inherited
Aber in Delphi gibt es Lazy Evaluation nicht, oder?

Klar, hat Christian doch geschrieben:
Zitat:

Zitat von Christian Seehase
In der Standardeinstellung ist "Complete boolean evaluation" abgeschaltet.

Siehe Projektoptionen -> Compiler

inherited 25. Mär 2008 13:22

Re: Was bedeutet AND?
 
War das schon immer so oder erst ab einer bestimmten Delphi-Version?

DeddyH 25. Mär 2008 13:25

Re: Was bedeutet AND?
 
Wenn ich mich recht entsinne, war das schon bei Delphi 2 so (oder sogar bei Delphi 1).

inherited 25. Mär 2008 13:27

Re: Was bedeutet AND?
 
Dann hatte ich das die ganze Zeit falsch im Kopf, Entschuldigung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz