Seite 1 von 1

Bit Verschiebung umkehren

Verfasst: Freitag 20. Mai 2016, 18:41
von nooby
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?

Re: Bit Verschiebung umkehren

Verfasst: Freitag 20. Mai 2016, 19:08
von DasIch
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.