在C++ 11中打印std :: bitset

Rom*_*ain 0 c++ bitset uint64 c++11

考虑以下用C++ 11编写的代码:

#include <iostream>
#include <bitset>
#include <cstdint>

int main() {

    std::uint64_t a = 0000000000000000000000000000000000000000000000001111111100000000;
    std::bitset<64> b(a);

    std::cout << b << std::endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码的输出是:

0000000000000000001001001001001001001001000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

为什么此输出与a值不对应?

Hiu*_*ura 10

如果要编写二进制数,则需要使用0b前缀.

std::uint64_t a = 0b0000000000000000000000000000000000000000000000001111111100000000;
std::bitset<64> b(a);
Run Code Online (Sandbox Code Playgroud)

您的示例已修复并正常工作