标签: java bit-manipulation
有人可以解释为什么下面的计算会溢出吗?
938372878L | (1 << 31) //results to -1209110770
它的行为就像数字是整数一样。
答案 0 :(得分:4)
1是一个int字面值,这就是(1 << 31)溢出的原因。您应将其更改为1L,以便将其视为long:
1
int
(1 << 31)
1L
long
938372878L | (1L << 31)
这导致
3085856526