Delphi-PRAXiS
Seite 1 von 3  1 23      

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.
Seite 1 von 3  1 23      

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