baphomet Geschrieben 12. September 2011 Teilen Geschrieben 12. September 2011 Hi, ich bin ja wirklich nicht schlecht in C, aber bei folgendem Ausdruck weiß ich nicht weiter wann der Ausdruck wahr wird und wann falsch. if (qoff & 0x1) qoff ist ein long, das & bedeutet ein Logisches UND ist auch auch klar, und die 0x1 ist mir soweit auch klar(Hexadezimalsystem). qoff wird einfach mit einer 1 UND verknüpft. Aber woran wird nach der Verknüpfung festgemacht ob der Ausdruck wahr oder falsch ist, anhand des Werts des most-significant bit oder least-significant bit? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 12. September 2011 Teilen Geschrieben 12. September 2011 In C wird 0 immer als falsch betracht und alles ungleich 0 als wahr. Also 0 gleich false und !0 gleich true Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baphomet Geschrieben 12. September 2011 Autor Teilen Geschrieben 12. September 2011 Das mit 0=false und 1=true weiß ich doch, wie verhält es sich aber mit dem obigen Ausdruck. qoff ist vom Datentyp long, also Darstellung mittels des 2er Komplements, jetzt ist für mich entscheident ob das höherwertigste bzw. niederwertigdte bit den Ausschlag für true oder false gibt. Beispiel: qoff=234 Dann lautet die Binärdarstellung: 11010100 Das verknüpfe ich mit 1, nutze die UND Verknüpfung 11010100 00000001 11010100 Das interessiert mich letztendlich, das letze bit entscheidet oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 12. September 2011 Teilen Geschrieben 12. September 2011 Nein. Wenn das Ergebnis 0 ist dann ist es falsch, ist es nicht 0 dann ist es wahr. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. September 2011 Teilen Geschrieben 12. September 2011 Das verknüpfe ich mit 1, nutze die UND Verknüpfung 11010100 00000001 11010100Falls die dritte Zeile das Ergebnis darstellen soll: Das ist keine UND-Verknüpfung, du hast einfach die erste Zeile abgeschrieben. Das interessiert mich letztendlich, das letze bit entscheidet oder?Alle Bits entscheiden. Wenn im Ergebnis auch nur ein Bit stehen bleibt (egal welches), ist das Ergebnis wahr. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baphomet Geschrieben 12. September 2011 Autor Teilen Geschrieben 12. September 2011 Ok alle Bits entscheiden, kann man das irgendwo nachlesen zum Beispiel in einem Buch, hab bei mir in der Literatur nämlich dazu nix gefunden. Und ja die 3. Zeile soll das Ergebnis meiner UND Verknüpfung darstellen, wieso ist das falsch 0 UND 0 ergibt 0, 0 UND 1 und umgekehrt ergibt ebenfalls 0, 1 UND 1 ergibt 1. Das habe ich für jede Stelle entsprechend durchgeführt. qoff hat den Wert 234, im Binärsystem 11010100, das sollte soweit stimmen, da es sich bei der if Anweisung um 0x1 andelt wird einfach mit einer 1 die bitweise UND Verknüpfung durchgeführt, sieht doch dann so aus: 11010100 00000001 Oder nicht, dann zeig mir bitte wie es korrekt sein soll, so stehts auch bei Wiki? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 12. September 2011 Teilen Geschrieben 12. September 2011 Ok alle Bits entscheiden, kann man das irgendwo nachlesen zum Beispiel in einem Buch, hab bei mir in der Literatur nämlich dazu nix gefunden.Alles, was du wissen musst, steht hier im Thread. Wenn das Ergebnis der Verknüpfung 0 ist, bekommst du false, ansonsten true. Damit ist klar, dass alle Bits entscheiden, denn sobald auch nur ein Bit gesetzt ist, kommt ja nicht mehr 0 heraus. Und ja die 3. Zeile soll das Ergebnis meiner UND Verknüpfung darstellen, wieso ist das falsch 0 UND 0 ergibt 0, 0 UND 1 und umgekehrt ergibt ebenfalls 0, 1 UND 1 ergibt 1. Das habe ich für jede Stelle entsprechend durchgeführt.Nein, hast du nicht. Beispiel erstes Bit: 1 UND 0 ergibt 0, bei dir steht 1. 11010100 00000001 UND-Ergebnis: 00000000 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baphomet Geschrieben 12. September 2011 Autor Teilen Geschrieben 12. September 2011 Stimmt, in der Eile einfach copy and paste und nicht verifziert das es auch das richtige ist. Gut stimmt, mein Fehler und Danke an Klotzkopp jetzt weiß ich was es zu bedeuten hat und kann es selbst anwenden. Das war das einzigste was mir Probleme bereitet hat weil ich nicht wußte was dahinter steckt, hätte ich mir auch selbst zusammen reimen können aber ich war mir unsicher. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.