![]() |
Was bedeutet AND?
Hey,
ich würde gerne mal wissen, was die Funktion AND bewirkt. NEIN, natürlich nicht das hier:
Delphi-Quellcode:
Sondern das hier:
If (i=1) AND (j=2) Then...;
Delphi-Quellcode:
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.:
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;
Code:
Also kann der Wert zwischen 0 und 31 schwanken. Ich würde jetzt mal gerne wissen, was dieses AND bewirkt.
Button1 -> 1
Button2 -> 2 Button3 -> 4 Button4 -> 8 Button5 -> 16 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] |
Re: Was bedeutet AND?
Ist die binäre Addition.
|
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. |
Re: Was bedeutet AND?
Ich verstehe noch nicht ganz..
Wieso genau ist 1001 and 1100 = 1000? |
Re: Was bedeutet AND?
Code:
1 AND 1 = 1
.
1 0 0 1 A N D 1 1 0 0 --------- = 1 0 0 0 1 AND 0 = 0 0 AND 1 = 0 0 AND 0 = 0 |
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. |
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? |
Re: Was bedeutet AND?
die checkboxen zeigen also die binäre schreibweise der zahlen an.
|
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:
Passt so. Ich hoffe mal, ich hab das jetzt richtig gemacht...
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] |
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. |
Re: Was bedeutet AND?
Zitat:
|
Re: Was bedeutet AND?
Zitat:
|
Re: Was bedeutet AND?
Hier noch etwas zum Nachlesen bezüglich Bitmasken:
![]() |
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 |
Re: Was bedeutet AND?
Hier kannst Du auch nochmal nachlesen:
![]() |
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.
|
Re: Was bedeutet AND?
Wurde vielleicht genauso wie die Mengenlehre wegrationalisiert
|
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. |
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:
|
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.
|
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: |
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:
Mfg |
Re: Was bedeutet AND?
Moin Robert,
Zitat:
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. |
Re: Was bedeutet AND?
Aber in Delphi gibt es Lazy Evaluation nicht, oder?
|
Re: Was bedeutet AND?
@Christian Seehase: Ok, dann hab ich da wohl etwas zu weit gedacht..
Mfg |
Re: Was bedeutet AND?
Zitat:
Zitat:
|
Re: Was bedeutet AND?
War das schon immer so oder erst ab einer bestimmten Delphi-Version?
|
Re: Was bedeutet AND?
Wenn ich mich recht entsinne, war das schon bei Delphi 2 so (oder sogar bei Delphi 1).
|
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