なぜこのプログラムは次の出力を表示していますか?なぜstd :: bitset <8>変数が11111111を処理できないのですか?
#include <bitset>
...
{
std::bitset<8> b1(01100100); std::cout<<b1<<std::endl;
std::bitset<8> b2(11111111); std::cout<<b2<<std::endl; //see, this variable
//has been assigned
//the value 11111111
//whereas, during
//execution, it takes
//the value 11000111
std::cout << "b1 & b2: " << (b1 & b2) << '\n';
std::cout << "b1 | b2: " << (b1 | b2) << '\n';
std::cout << "b1^b2: " << (b1^b2) << '\n';
}
これが出力されます:
01000000
11000111
b1 & b2: 01000000
b1 | b2: 11000111
b1^b2: 10000111
まず、私は、ヘッダファイルに問題があると思った(私はMinGWのを使用していた)ので、私は はMSVCCを使用してチェック。しかしそれも同じことを示しました。助けてください。
0xffを使用すると修正されます(または0b11111111がコンパイラをサポートしています) –
バイナリの初期化をそのような小数点で行った場合、ちょっとしたことがあります – Inverse