乘以integer.MAX_VALUE

ban*_*alo 1 integer

我正在尝试乘以integer.MAX_VALUE(即2147483647)2.当我执行程序时,它显示integer.MAX_VALUE为-2.

为什么是-2?

Ode*_*ded 6

许多现代计算机体系结构将二进制的整数表示为两个补码.

将2147483647添加到自身会导致溢出,从而导致-2表示.

 011111111111111111111111
+011111111111111111111111
-------------------------
 111111111111111111111110
Run Code Online (Sandbox Code Playgroud)

从上面你可以看到符号位(第一个)现在是1,表示一个负数,并且除了最后一个之外的所有其他位都是1,一起意味着两个补码中的-2.