相关疑难解决方法(0)

Java如何处理整数下溢和溢出以及如何检查它?

Java如何处理整数下溢和溢出?

在此之后,您将如何检查/测试这是否正在发生?

java integer integer-overflow

210
推荐指数
8
解决办法
15万
查看次数

添加到Number.MAX_VALUE

这个问题的答案可能非常明显,但我无法通过粗略搜索在Mozilla文档或谷歌上找到它.

如果你有这样的代码

Number.MAX_VALUE + 1; // Infinity, right?
Number.MIN_VALUE - 1; // -Infinity, right?
Run Code Online (Sandbox Code Playgroud)

然后我希望将任何东西添加到Number.MAX_VALUE会将其推送到Infinity.结果只是Number.MAX_VALUE吐了回来.

但是,当在Chrome JS控制台中玩游戏时,我注意到它实际上并没有实际发生,Infinity直到我添加/减去足够的内容:

Number.MAX_VALUE + Math.pow(100,1000); // now we hit Infinity
Number.MIN_VALUE - Math.pow(100,1000); // -Infinity at last
Run Code Online (Sandbox Code Playgroud)

什么是这个"缓冲"的解释Number.MAX_VALUEInfinity

javascript math floating-point infinity

13
推荐指数
2
解决办法
1912
查看次数

"模拟"JavaScript中的32位整数溢出

JavaScript可以处理以下数学:

var result = (20000000 * 48271) % 0x7FFFFFFF;
Run Code Online (Sandbox Code Playgroud)

但是在某些编程语言中,第一次int*int乘法导致的值太大而无法保存在标准的32位整数中.有没有办法在JavaScript中"模拟"这个,并看看如果乘法导致整数溢出,结果计算会是什么?

javascript integer-overflow

10
推荐指数
2
解决办法
2109
查看次数

什么是浮点数上溢和下溢

我觉得我不太了解overflowand的概念underflow。我问这个问题是为了澄清这一点。我需要在最基本的层面上理解它。让我们使用1字节的简化浮点表示-1位符号、3位指数和4位尾数:

0 000 0000
Run Code Online (Sandbox Code Playgroud)

我们可以存储的最大指数111_2=7减去K=2^2-1=3给出的偏差4,它是为Infinity和保留的NaN。max number 的指数是3,它110在偏移二进制之下。

所以最大数的位模式是:

0 110 1111 // positive
1 110 1111 // negative
Run Code Online (Sandbox Code Playgroud)

当指数为零时,该数字是次正规的并且具有隐式0而不是1。所以最小数的位模式是:

0 000 0001 // positive
1 000 0001 // negative
Run Code Online (Sandbox Code Playgroud)

我找到了单精度浮点的这些描述:

Negative numbers less than ?(2?2?23) × 2127 (negative overflow)
Negative numbers greater than ?2?149 (negative underflow)
Positive numbers less than …
Run Code Online (Sandbox Code Playgroud)

javascript floating-point ieee-754

7
推荐指数
1
解决办法
1万
查看次数