math - 数字的意义-947483647

标签 math binary integer 32bit-64bit twos-complement

我正在将一些代码从具有 32 位整数的编译器迁移到 64 位。我发现一些旧代码假设最大可能的整数是 2147483647,最小可能的整数是 -947483647。

我了解最高的(最大有符号 32 位整数),但是有人知道最低的是什么特别吗?业务逻辑中没有任何内容表明该整数(用于 ID)不能低于该数字。

搜索谷歌发现很少,除了一些其他代码,其中有人在名为 INF 的变量中使用了 947483646(无穷大/最大可能数?在带符号的补码表示中,这将导致“负无穷大”-947483647)。

这可能只是一个毫无意义的数字,但也有一些其他命中使用该确切数字来表示其他整数,例如视频游戏中的怪物生命值(在搜索其他接近的数字时没有结果),这让我认为背后有什么东西。

最佳答案

Int32数据类型没有无穷大的值,因此可以随机选择魔数(Magic Number)来表示INF。
+INF 自然会选择最大整数值(2^31-1)。
但为什么 -INF 没有选择 (-2^31) 呢?
可能是因为 +INF 和 -INF 在打印时必须具有相同的长度(每个 10 个字符)。

关于math - 数字的意义-947483647,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16530750/

相关文章:

c++ - 在 C++ 中读取单个输入行中的整数列表

c - 读取 2 个整数是否是倍数

java - Java中是否有常用的有理数库?

math - 你如何创建一个 yield 递减的公式?

c# - 两个数组的乘积之和(点积)

C 将 4 位数字转换为二进制

c - 为什么 GCC 不能为 int 除法生成正确的汇编代码?

algorithm - 动态规划中的包含 - 排除

c - 构成一个整数的二进制表示

c++ - 使用 ios::binary 从标准中读取