Zum Inhalt springen

Wann liefert folgender Ausdruck wahr und wann falsch


baphomet

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das verknüpfe ich mit 1, nutze die UND Verknüpfung

11010100

00000001

11010100

Falls 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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...