Bit Verschiebung umkehren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nooby
User
Beiträge: 91
Registriert: Montag 12. März 2012, 20:39
Wohnort: 127.0.0.1

Hallo Zusammen

Nach meinem Verständnis (waren) bit-Verschiebungen umkehrbare Vorgänge, d.h. 2 << 2 = 8 und 8 >> 2 ist wieder 2.
Nun habe ich aber festgestellt, das das ganze in Python nicht stimmt.

Code: Alles auswählen

a = 26388719751232
b = a >> 8
c = b << 8
>>> a
26388719751232

>>> c
26388719751168

>>> c == a
False

Was muss ich tun, damit dies funktioniert?
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Dein Verständnis ist falsch. Ein Shift anders als ein Rotate rotiert die Bits nicht. Die Bits auf einer Seite gehen verloren auf der anderen wird mit Nullen aufgefüllt (ggfs. wird noch carry/sign auf Null gesetzt). Das lässt sich selbstverständlich nicht rückgängig machen.
Antworten