Eigentlich dachte ich, da gäbe es nicht viel zu wissen, verwende ich doch gerne und recht häufig Bitmanipulation mittels <<, >> und >>>.
Jetzt habe ich mal etwas intensiver damit rumgespielt und ein Verhalten entdeckt, welches mir neu war.
Z.B. bei 32Bit-Zahlen hätte ich erwartet, dass bei einem linksshift um mehr als 31 Stellen auf jeden Fall 0 zurückgegeben wird, also 1 << 32 = 0.
Dem ist aber nicht so. Es macht den Anschein, als ob stattdessen 1 << (32 & 31) berechtet wird, und das entspricht dann 1 << 0 = 1 (Analog auch für >> und >>>).
Im Netz finde ich hierzu gerade nichts. Kennt wer eine ausfürlichere Dokumentation zum Thema?
Jetzt habe ich mal etwas intensiver damit rumgespielt und ein Verhalten entdeckt, welches mir neu war.
Z.B. bei 32Bit-Zahlen hätte ich erwartet, dass bei einem linksshift um mehr als 31 Stellen auf jeden Fall 0 zurückgegeben wird, also 1 << 32 = 0.
Dem ist aber nicht so. Es macht den Anschein, als ob stattdessen 1 << (32 & 31) berechtet wird, und das entspricht dann 1 << 0 = 1 (Analog auch für >> und >>>).
Im Netz finde ich hierzu gerade nichts. Kennt wer eine ausfürlichere Dokumentation zum Thema?