【发布时间】:2014-02-09 14:21:16
【问题描述】:
我知道这样的话题被问了好几次,但是我的问题是关于完整的 32 位 int 的溢出。例如:
11111111111111111111111111111111 +
00000000000000000000000000000001 =
00000000000000000000000000000000 //overflow!
我发现topic 有类似的问题,但是算法并不完美。
11111111111111111111111111111111 +
00000000000000000000000000000000 =
00000000000000000000000000000000 //overflow!
有没有什么简单、快速、安全的检查方法?
【问题讨论】:
-
顺便说一句,Java int 始终为 32 位(无论您的给定 JVM 在 [stackoverflow.com/questions/18017752/… 上运行的架构如何):“默认情况下,int 数据类型是 32 位有符号二进制补码整数,最小值为 -231,最大值为 231-1" (docs.oracle.com/javase/tutorial/java/nutsandbolts/…)。所以这里的 32 位规范似乎有点无关紧要/没有实际意义。
标签: java integer bit-manipulation integer-overflow integer-arithmetic