小编Nat*_*e K的帖子

双精度数的 C++ 位表示

我的理解是,双精度数是根据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;

c++ compression double ieee-754

4
推荐指数
1
解决办法
508
查看次数

标签 统计

c++ ×1

compression ×1

double ×1

ieee-754 ×1