0

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;
}

コードの出力は次のとおりです。

0000000000000000001001001001001001001001000000000000000000000000

aこの出力が値に対応しないのはなぜですか?

4

2 に答える 2

10

2 進数を書きたい場合は、0bプレフィックスを使用する必要があります。

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

あなたの例は修正され、ライブで動作しています

于 2015-04-24T20:28:58.400 に答える