![]() |
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 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