Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Hilfe bei einer IF-Anweisung

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
E&S



Anmeldungsdatum: 22.08.2011
Beiträge: 2

BeitragVerfasst am: 22.08.2011, 08:58    Titel: Hilfe bei einer IF-Anweisung Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 22.08.2011, 09:37    Titel: Re: Hilfe bei einer IF-Anweisung Antworten mit Zitat

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. zwinkern 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
E&S



Anmeldungsdatum: 22.08.2011
Beiträge: 2

BeitragVerfasst am: 22.08.2011, 13:31    Titel: Danke Antworten mit Zitat

Vielen Dank für die schöne Erklärung, jetzt verstehe ich es endlich lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz