J'essaie de combiner deux entiers à un long en Java. Voici le code que je utilise:Java, combinant deux entiers à long nombre de résultats négatifs
Long combinedValue = (long) a << 32 | b;
Quand a = 0x03
et b = 0x1B56 ED23
, je suis en mesure d'obtenir la valeur attendue (dans combinedValue = 13343583523
long).
Cependant, quand mon a = 0x00
et b = 0xA2BF E1C7
, je reçois une valeur négative, -1567628857
, au lieu de 2730484167
. Quelqu'un peut-il expliquer pourquoi le décalage d'un entier de 0 à 32 bits fait que les 32 premiers bits deviennent 0xFFFF FFFF
?
Merci
Utilisez 'long' à la place de' Long' pour 'combinedValue'. –