Forum: Compiler & IDEs Logische Operatoren Verständnis


von mpt (Gast)


Lesenswert?

Hallo!
Wir haben bald Klausur und bin auf folgendes im Fragenkatalog 
aufgestoßen:
mask = ~(~0 << n)
mask = ~(~0 << m – n + 1) << n          //m >= n

Was für ein Spaß passiert da?
beim ersten sowas oder: ~(255 << n) und das nochmal negiert ist dann 
was? 255 >> n ->ein Rechtsshiften?

und das Zweite ist mir zu hoch

kann mir da wer helfen?
Is anybody out there?

mfg
mpt

von Tipp (Gast)


Lesenswert?

Lass es im Debugger laufen.

von mpt (Gast)


Lesenswert?

bei der klausur hab ich ja auch keinen Debugger xD

von Al (Gast)


Lesenswert?

Wo sollen beim ersten die 255 herkommen?

von Tipp (Gast)


Lesenswert?

mpt schrieb:
> bei der klausur hab ich ja auch keinen Debugger

Willst du nur ein Ergenis oder es verstehen? Verstehen geht mit dem 
Debugger.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Spiel das Ganze einfach anhand einiger Beispiele auf (Karo-)Papier
durch. Du wirst dann schnell erkennen, wohin der Hase läuft. Dann
versuchst du, in einem einfachen Satz zu formulieren, welche Bits im
Ergebnis gesetzt sind (abhängig von n und m).

~0 ist übrigens nicht 255, sondern besteht aus sovielen Einsen wie der
int-Datentyp Bits umfasst (i.Allg. 16 oder 32).

von Oliver (Gast)


Lesenswert?

Tipp schrieb:
> Verstehen geht mit dem Debugger

In dem Fall nicht.

Verstehen geht mit einem C-Buch. Darin die Kapitel "Operatoren" (was 
machen die komischen Zeichen da überhaupt?) und "Operator precedence" 
bzw. "Priorität" 8wenn da mehrere Operatoren in einer Anweisung stehen, 
in welcher Reihenfolge werden die ausgeführt?).

Und das dann, wie Yalu schon schrieb, zu Fuß auf einem Blatt Papier 
lösen. Schritt für Schritt.

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Nach dem Studium des K&R verinnerlichen, dass es einen grundlegenden 
Unterschied zwischen 'logischen Operatoren' und 'binären (oder 
bitweisen) Operatoren' gibt.
In manchen Fällen (zb & und &&) sind sie Schreibweisen sehr ähnlich, so 
dass man sie beim schnellen Drüberlesen schon mal verwechseln kann, wenn 
man diesen grundlegenden Unterschied nicht verinnerlicht hat.

von Rolf Magnus (Gast)


Lesenswert?

Yalu X. schrieb:
> ~0 ist übrigens nicht 255, sondern besteht aus sovielen Einsen wie der
> int-Datentyp Bits umfasst (i.Allg. 16 oder 32).

Da int vorzeichenbehaftet ist, entspricht ~0 der Zahl -1. Das ist dann 
auch unabhängig von der Größe von int.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.