Ich versuche, zwei Ganzzahlen zu einem langen in Java zu kombinieren. Hier ist der Code Ich verwende:Java, kombiniert zwei ganze Zahlen zu langen Ergebnissen negative Zahl
Long combinedValue = (long) a << 32 | b;
Wenn a = 0x03
und b = 0x1B56 ED23
, ich bin in der Lage den erwarteten Wert (combinedValue = 13343583523
in lang) zu erhalten.
Allerdings, wenn meine a = 0x00
und b = 0xA2BF E1C7
, bekomme ich einen negativen Wert, -1567628857
, anstelle von 2730484167
. Kann jemand erklären, warum das Verschieben einer Ganzzahl von 0 um 32 Bits bewirkt, dass die ersten 32 Bits 0xFFFF FFFF
werden?
Dank
Verwenden Sie 'long' anstelle von' Long' auch für den 'combinedValue'. –