假设我们有,这int n = 2 ^ 31就是n-1 = 0111111111111111111111111111111我在本地可以得到的。
我的猜测:首先转换n为long-> 减法 -> 切片以适应int.
System.out.println(n);
System.out.println(Integer.toBinaryString(n-1) + " : " + Integer.bitCount(n-1));
System.out.println(n-1);
// output
-2147483648
1111111111111111111111111111111 : 31
2147483647
但是我没有找到任何规范来验证我的猜测,有吗?
来自整数溢出维基。
当算术运算产生的结果大于上述 N 位整数的最大值时,溢出会将结果缩减为 2 的 N 次方模,仅保留结果的最低有效位并有效地导致回绕。
如果我的猜测完全错误,那么它实际上是如何工作的呢?我可以参考任何链接吗?
任何帮助将不胜感激 :)
泛舟湖上清波郎朗
翻过高山走不出你
随时随地看视频慕课网APP
相关分类