我的理解是,双精度数是根据C++中的IEEE 754-2008标准存储的,其中第一位是符号,后面的11位是指数,其余52位是分数。然而,下面的代码+输出显示了其他内容。
代码
#include <bitset>
#include <iostream>
int main() {
double value_float = 1.5;
uint64_t value_uint = 0;
std::memcpy(&value_uint, &value_float, 8);
std::cout << value_uint << std::endl;
std::bitset<64>doubleBitset(value_uint);
std::cout << "DoubleBitset for " << value_float << " is: ";
std::cout << doubleBitset << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
输出:DoubleBitset for 1.5 is: 0011111111111000000000000000000000000000000000000000000000000000
为什么没有输出0b0 - 00000000001 1000000000000000000000000000000000000000000000000000;