你最好看看桌子,了解我想要的东西:
?????????????????????????????????????????????
? name ? sign ? exponent ? fraction ?
?????????????????????????????????????????????
?float16 ? 1 ? 5 ? 10 ?
?????????????????????????????????????????????
?float32 ? 1 ? 8 ? 23 ?
?????????????????????????????????????????????
?float64 ? 1 ? 11 ? 52 ?
?????????????????????????????????????????????
?float128? 1 ? 15 ? 112 ?
?????????????????????????????????????????????
?float256? 1 ? ???? ? ???? ?
?????????????????????????????????????????????
?float512? 1 ? ???? ? ???? ?
?????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
我的问题是如何计算指数和分数的位数给定总位数,如256,512或1024.
IEEE-754(2008)的早期草案定义了任意宽度浮点数"应该"的指数和有效数字段的宽度的指导原则.这不是一项艰难的要求,而只是推荐的做法.它被认为对于提供的最小利益来说过于繁琐,因此它完全从标准中删除,并替换为:
语言标准应定义支持每个支持的基数的可扩展精度的机制.支持可扩展精度的语言标准应允许用户指定p和emax.语言标准还应允许通过单独指定p来指定可扩展的精度; 在这种情况下,当p是≥二进制格式的237位或者p是≥十进制格式的51位时,emax应由语言标准定义为至少1000×p.
(3.7扩展和可扩展精度,第14页).
也就是说,标准仍然定义(不要求)第3.6节(p13)表格中每个32位大小的"交换格式"大于128.具体地说,宽度的二进制格式k具有round(4*log2(k)) - 13位指数.对于具体情况k=256,这给出:
exponent: round(4*log2(256)) - 13 = 32 - 13 = 19
significand: 256 - 1 - 19 = 236
Run Code Online (Sandbox Code Playgroud)
对于遵循此公式的384位宽格式,指数宽度将为:
round(4*log2(384)) - 13 = round(34.339850002884624) - 13 = 21 bits
Run Code Online (Sandbox Code Playgroud)
请注意,有许多程序包用于任意精度浮点运算,不符合本指南.这只是"binary256交换格式"的定义,而不是任何给定实现必然使用的定义.
| 归档时间: |
|
| 查看次数: |
1375 次 |
| 最近记录: |