float256中指数和分数的大小

时间:2011-08-14 20:59:27

标签: floating-point

你最好看看桌子,了解我想要的东西:

╔════════╦════════╦════════════╦════════════╗
║  name  ║  sign  ║  exponent  ║  fraction  ║
╠════════╬════════╬════════════╬════════════╣
║float16 ║    1   ║      5     ║     10     ║
╠════════╬════════╬════════════╬════════════╣
║float32 ║    1   ║      8     ║     23     ║
╠════════╬════════╬════════════╬════════════╣
║float64 ║    1   ║     11     ║     52     ║
╠════════╬════════╬════════════╬════════════╣
║float128║    1   ║     15     ║    112     ║
╠════════╬════════╬════════════╬════════════╣
║float256║    1   ║    ????    ║    ????    ║
╠════════╬════════╬════════════╬════════════╣
║float512║    1   ║    ????    ║    ????    ║
╚════════╩════════╩════════════╩════════════╝

我的问题是如何计算指数的总位数和给定总位数的分数,例如256,512或1024.

3 个答案:

答案 0 :(得分:7)

IEEE-754(2008)的早期草案定义了任意宽度浮点数“应该”的指数和有效数字段宽度的指导原则。这不是一项艰难的要求,而只是推荐的做法。它被认为对于提供的最小利益来说过于繁琐,因此它完全从标准中删除,并替换为:

  

语言标准应定义支持可扩展的机制   每个支持的基数的精度。语言标准支持   可扩展精度应允许用户指定p和emax。   语言标准还应允许扩展的规范   单独指定p的精度;在这种情况下,emax应由   当p =≥237位时,语言标准至少为1000×p   二进制格式或p是十进制格式的≥51位数。

(3.7扩展和可扩展精度,第14页)。

也就是说,该标准仍然定义(不要求)第3.6节(p13)中表格中每个32位以上大小的“交换格式”。具体而言,宽度k的二进制格式具有round(4*log2(k)) - 13位指数。对于k=256的具体情况,这给出了:

exponent: round(4*log2(256)) - 13 = 32 - 13 = 19
significand: 256 - 1 - 19 = 236

对于遵循此公式的384位宽格式,指数宽度将为:

round(4*log2(384)) - 13 = round(34.339850002884624) - 13 = 21 bits

请注意,有许多软件包用于任意精度浮点运算,不符合本指南。这只是“binary256交换格式”的定义,而不是任何给定实现必然使用的内容。

答案 1 :(得分:0)

IEEE 754-2008 floating point standard中没有256位双。

不计算格式中的位数,它们是任意选择的,以给出特定的精度和范围。如果要创建自己的256位浮点数格式,可以选择能够提供所需精度和范围的大小。

答案 2 :(得分:0)

表中的值来自IEEE 754-2008标准,该标准最多只能达到128位。如果您的硬件或软件实现了更多位的浮点,则需要查阅其文档。