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
mpt schrieb: > bei der klausur hab ich ja auch keinen Debugger Willst du nur ein Ergenis oder es verstehen? Verstehen geht mit dem Debugger.
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).
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.