与整数表示相比,浮点表示可以支持更大的值

Floating point representation can support larger values in comparision to integer representation

本文关键字:表示 支持 整数      更新时间:2023-09-26

我已经用谷歌搜索过这个,但找不到如何,尽管对于知道它的人来说回答是一件简单的事情。我想知道浮点数如何存储整数表示无法存储的大数字。在教程中,我能读到的关于有效数、指数和基数的所有内容,但找不到我的答案。谁能上来解决它?例如,我必须在 32 位系统中表示一个大于 2147483647 的数字,然后如何在浮点表示而不是整数表示中完成它。

假设您假设此约定:整数的最后两位数字表示余数的 10 次方。然后,您可以在单个整数中存储最多 21474835 * 10^99 的数字。(您还需要对所有算术方法进行编程才能使用它

若要以相同的方式使用浮点数,可以使用相同的约定。由于有符号整数存储 9 位小数(10 位,但第一个只能是 0、1 或 2),因此您可以说小数点后的第一个小数点。所以要存储"1234.56",你会使用

123456004

-- 小数点约定说这是"1.23456 乘以 10^4",这与你存储的值相同。

精明的读者会注意到,你不能以这种方式存储"每一个可能的数字"。例如,超过允许的最大小数位数,它们将被丢弃。您也可以不存储负数小于 1 的值(请推断原因)。

这与你的问题有什么关系?这正是浮点数的存储方式,尽管有我概述的其他约定。留出一点作为符号;许多位保存"十进制"部分,另一组位保存"指数"部分。

二进制

浮点数的形式为 s * 2^e,表示两个整数 s(有效数)和 e(指数)。它实际上有点复杂,但这对这个问题无关紧要。对于 e=0,这只是一个普通整数,其位数与 s 一样多。对于 e> 0,这也是一个整数。您可以在二进制 32 浮点数(8 位指数,23 位有效数)中表示数字 2^40,s = 1,e = 40。或 s = 2,e = 39。或 s = 2^23,e = 17。