私は長い2つの整数をJavaで結合しようとしています。ここで私が使用しているコードは次のとおりです。Java、2つの整数を長い結果に結合する負の数
Long combinedValue = (long) a << 32 | b;
a = 0x03
とb = 0x1B56 ED23
、私は期待値(ロングでcombinedValue = 13343583523
)を取得することができています。
a = 0x00
とb = 0xA2BF E1C7
の場合、2730484167
ではなく、-1567628857
の負の値が得られます。誰もが整数0を32ビットシフトすると最初の32ビットが0xFFFF FFFF
になる理由を説明できますか?
おかげ
'combinedValue'に' Long'の代わりに 'long'を使います。 –