【发布时间】:2018-10-02 17:42:49
【问题描述】:
我需要获取一些浮点值(双精度值)的 64 位二进制表示(IEEE 754)。 我有这个用于浮点数的 32 位二进制表示的代码:
union
{
float input; // assumes sizeof(float) == sizeof(int)
int output;
} data;
data.input = value;
std::bitset<sizeof(float) * CHAR_BIT> bits(data.output);
在这种情况下,联合与皈依有何关系?为什么我应该使用它? 有没有一些漂亮的方法可以做同样的事情来获得 64 位表示?
【问题讨论】:
-
不能以这种方式使用
union。它可能会编译,但这并不能使它成为有效的代码。只有union中最后一个被分配的成员才有资格阅读。 -
const auto output = static_cast<double>(input) -
@JonathanMee 这不会保留
float的内存表示,这是原始代码试图做的。 -
这不是
reinterpret_cast的用途吗?
标签: c++ floating-point