Hallo,
ich habe ein Programm geschrieben, in dem eine int-Variable an ein gewisses Bitmuster synchronisiert wird.
Dabei hatte ich bis vor kurzem den Datentyp int verwendet. Nun stellte sich aber heraus, dass ich bis zu 56-Bit lange Bitströme erhalte.
Bis jetzt hatte ich bei der Synchronisierung die Befehle << bzw. >> verwendet, die aber beim Datentyp long nicht funktionieren.
Will ich nämlich folgenden Befehl
ausführen, so erhalte ich "48".
Wie es zu diesem Ergebnis kommt, ist mir klar.
Für mich stellt sich aber jetzt die Frage, wie ich so eine Bitverschiebung nun effizient löse.
ist doch sehr ineffizient, oder?
ich habe ein Programm geschrieben, in dem eine int-Variable an ein gewisses Bitmuster synchronisiert wird.
Dabei hatte ich bis vor kurzem den Datentyp int verwendet. Nun stellte sich aber heraus, dass ich bis zu 56-Bit lange Bitströme erhalte.
Bis jetzt hatte ich bei der Synchronisierung die Befehle << bzw. >> verwendet, die aber beim Datentyp long nicht funktionieren.
Will ich nämlich folgenden Befehl
Code:
wert = 12<<34
Wie es zu diesem Ergebnis kommt, ist mir klar.
Für mich stellt sich aber jetzt die Frage, wie ich so eine Bitverschiebung nun effizient löse.
Code:
wert = 12*(long)Math.pow(2, (34));