我刚刚开始更深入地学习浮点二进制编码,让自己感到困惑。在C限制中定义了float的最大值:
FLT_MAX = 3.402823e + 38
我不明白的是,如果我们有:
FLT_MAX_EXP = 128
这意味着对于规范化的二进制数,如果我们试图得到FLT_MAX,我们将使隐式位等于2 ^ 128。因此二进制文件中的FLT_MAX应如下所示:
签名:0 指数:11111111 尾数:00000000000000000000000
这意味着我们有23个未使用的位,而且我们已经有了最大数量。 但是如果我们使用这些位,我们可以获得比定义的FLT_MAX大2倍的数字。
你能否向我澄清这一点?
另外,我需要解释确切的负指数是如何存在的。如果在我的情况下,我们使用8位,根本没有符号位。我知道我们可以将1或2的补码表示为最重要的位。但是我们使用偏置指数,并且我们将所有位都用于指数幅度。如果是这样二进制负数和正指数如何不同。我们究竟如何定义偏倚指数的符号?
如果有人解释二进制32的最大和最小二进制32浮点值的计算显示二进制算术站在它旁边,我将非常感激。喜欢: 二进制演示 - >转换为十进制 - >十进制演示。