いつ:
byte[] b = {-128, 0, 0, 0};
long total = 0;
最初の式は -2,147,483,648 を返します。
for (int i = 0; i < b.length; i++) {
int shift = (b.length - 1 - i) * 8;
total += (b[i] & 255) << shift;
}
2 番目は 2,147,483,648 を返します。
for (int i = 0; i < b.length; i++) {
int shift = (b.length - 1 - i) * 8;
long tmp = (b[i] & 255);
total += tmp << shift;
}
私の質問は; 同じステートメントのように見えるのに、最初のステートメントが肯定的で、2 番目のステートメントが否定的であるのはなぜですか?