#include <bitset>
#include <iostream>
int main() {
std::bitset<8> a = 10101010;
std::bitset<8> b = 11111111;
std::cout << (a ^ b);
}
运行以下代码时结果是:
11010101
预期输出为:
01010101
我做错什么了吗?
5
最佳答案
1
使用十进制文字值(, )来初始化a
和。b
int
10101010
11111111
为了使用二进制文字,您需要0b
前缀:
#include <bitset>
#include <iostream>
int main() {
std::bitset<8> a = 0b10101010;
std::bitset<8> b = 0b11111111;
std::cout << (a ^ b);
}
输出:
01010101
关于此类文字的更多信息:。
附注:
如上所述,您使用的当前值是十进制整数文字。但是八进制文字
也有0
前缀(不带b
)。
因此,如果您使用例如初始化或,它将被解释为八进制(基数为 8)值。01010101
a
b
0
|
–
–
–
10101010
被解释为十进制整数,正如其他人所指出的那样。但请注意,它将01010101
被解释为八进制整数,这让大多数从未使用过八进制数的 C++ 程序员感到惊讶。所以要小心。–
–
|