首页 > 解决方案 > 提取尾数的二进制值

问题描述

我有点问题。给定:一些实数(例如 -474.875) 任务:提取尾数的 BINARY 值 对于数字 -474.875 我需要这个值 1, 11011010111 * 2^8 我有一个程序:

const float d = -474.875f;
int exponent;
const float mantissa = frexp(d, &exponent);
double prev = mantissa * pow(2, exponent);

它计算十进制尾数(我的数字是-0.927490234)和指数(9)。我试图将此尾数转换为二进制......但失败了......我得到了其他价值。要获得原始值:尾数* 2^exponent。问题:如何获得尾数的二进制值?也许有可能以更漂亮的方式做到这一点?

标签: c++floating-point

解决方案


您可能希望将联合与您的浮点数和整数一起使用。这样你就可以做一些二进制操作,比如提取尾数。

这些链接可以帮助您:

浮点到二进制值(C++)

带联合的二进制表示


推荐阅读