我需要将 C/C++ double 转换为 64 位二进制补码,其中 Radix 点位于第 19 位(含)。
这意味着对于我要转换为的格式
- 0x0000 0000 0010 0000 是数字 1
- 0xFFFF FFFF FFF0 0000 是数字-1
- 0x0000 0000 0000 0001 是 0.95 x 10^-6
- 0xFFFF FFFF FFFF FFFF 为 -0.95 x 10^-6
到目前为止,我一直在使用 C 标准库中的 modf 函数,但这并不能真正满足我的需求。我还查看了 Boost 中的一些类型转换类,但我也找不到合适的解决方案。有谁知道图书馆或简单的方法来进行这种转换?也许更熟悉 Boost 的人可以为我指明正确的方向。
如果这有帮助,这里有一些关于如何存储双打的文档。
编辑:
我有一个后续问题,这真的是为了我自己的利益。什么是“基数”?这里有点像小数点。但是,我唯一一次听到基数这个词是在我学习离散快速傅里叶变换的时候。如果我没记错的话,Radix-II 方法很快,因为计算 DFT 所需的乘法更少。