 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
E&S
Anmeldungsdatum: 22.08.2011 Beiträge: 2
|
Verfasst am: 22.08.2011, 08:58 Titel: Hilfe bei einer IF-Anweisung |
|
|
Guten Morgen,
wie bereits beschrieben brauche ich etwas Hilfe bei einer If-Anweisung. Ich habe einen Programmcode in dem mehrerer solcher IF-Anweisungen auftauchen, ich kann damit bis jetzt aber nicht viel anfangen.
Die Anweisungen sind:
Code: |
IF et.textkey AND 1 THEN
.....
.....
IF et.textkey AND 2 THEN
.....
..
IF et.textkey AND 4 THEN
.....
.....
|
Die Variable "et.textkey" wird errechnet.
Jetzt zu der genauen Frage:
1) Was bedeutet "IF et.textkey"? Wird hier abgefragt ob es gefüllt ist?
2) Was bedeutet "AND 4 THEN"? Hier wird die Zahl vier mit keiner Variable verglichen!
Ich vermute das man die Anweisung "IF et.textkey AND 4 THEN" zusammen betrachten muss, aber ih bin mir nicht sicher.
Vielen Dank für die Hilfe. |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 22.08.2011, 09:37 Titel: Re: Hilfe bei einer IF-Anweisung |
|
|
Hallo und willkommen im Forum!
E&S hat Folgendes geschrieben: | Ich vermute das man die Anweisung "IF et.textkey AND 4 THEN" zusammen betrachten muss |
Genauso ist es. Man könnte die Zeile auch schreiben als
Code: | IF (et.textkey AND 4) THEN |
Das AND verknüpft hier die zwei Operanden et.textkey (Variable) und 4 (Konstante/Literal). (vgl. dazu AND in der Logik).
Binär könnte das zum Beispiel so aussehen (die Variable wird der Übersicht halber auf 8 Bit verkürzt (entspricht Datentyp UByte in FreeBASIC)):
Code: | 00100111 ( 39 dezimal)
AND 11100001 (225 dezimal)
-------------
= 00100001 ( 33 dezimal) |
Die x. Stelle der neuen Binärzahl ist genau dann 1, wenn die x. Stelle der beiden Operanden auch 1 ist. Ist sie bei nur einem oder keinem der Operanden 1, ist sie im Ergebnis 0.
Man spricht in diesem Fall auch davon, eine Bitmaske über eine Zahl zu legen. Was hat es nun mit der 4 auf sich?
Die 4 ist eine Zweierpotenz und der Computer rechnet mit Zahlen zur Basis 2, also im Binärsystem. Das bedeutet, dass nur ein Bit innerhalb einer Binärzahl gesetzt sein muss, um die 4 darzustellen (<Basis2> hoch 2). D.h. binär sieht die 4 so aus: (100)2
Man könnte es vereinfacht so formulieren: Durch die AND-Verknüpfung mit 4 wird aus der Original-Zahl nur das 3. Bit (vom niederwertigen Ende aus) "durchgelassen". Das Ergebnis der AND-Verknüpfung mit 4 kann also nur 0 oder 4 sein.
Für die IF-Abfrage bedeutet das Folgendes: 0 ist FALSE. Alles andere (-1, 1, 2, 3, 4, ...) ist TRUE, d.h. eine 4 im Ergebnis macht die Abfragebedingung wahr. Mit der IF-Abfrage wird somit geprüft, ob das dritte Bit (vom niederwertigen Ende aus gezählt) 1 war oder nicht.
Code: | IF (et.textkey AND 4) THEN
PRINT "Das Bit mit dem Stellenwert 4 war gesetzt (=1)."
END IF |
Viele Grüße!
Sebastian _________________
Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
 |
E&S
Anmeldungsdatum: 22.08.2011 Beiträge: 2
|
Verfasst am: 22.08.2011, 13:31 Titel: Danke |
|
|
Vielen Dank für die schöne Erklärung, jetzt verstehe ich es endlich  |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|