我明白了
11001110
& 10011000
= 10001000
但我想亲自测试它
所以我声明了unsigned char并将其打印出来,但它只给我一个空白。
unsigned char result;
result= 11001110 & 10011000;
cout<<result;
也尝试使用unsigned int进行测试,但结果是0,这不是我预期的。
我明白了
11001110
& 10011000
= 10001000
但我想亲自测试它
所以我声明了unsigned char并将其打印出来,但它只给我一个空白。
unsigned char result;
result= 11001110 & 10011000;
cout<<result;
也尝试使用unsigned int进行测试,但结果是0,这不是我预期的。
11001110
和10011000
在编译器的看法中不是二进制数。
二进制数11001110
表示206,而10011000
表示152,因此您想要的实际上是(我认为):
result = 206 & 152;
std::bitset
,然后将结果打印为二进制数。0b11001110
。 - Mike Seymour0b1011_1000_0001
。 - chrisBOOST_BINARY(1011 1000 0001)
- PiotrNycz您可能希望考虑使用hex
进行测试。
int a = 0xCE; // 11001110
int b = 0x98; // 10011000
int result = a & b;
cout << hex << result << endl;
result
转换为二进制的函数。在C++中,您必须使用十六进制表示位数。因为11001110是0XCE,而10011000是0X98。
unsigned char b1 = 0XCE;
unsigned char b2 = 0X98;
unsigned char b = b1 & B2;
二进制中的11001110与十进制中的同一个数字不相同。
由于C++没有二进制指定符(但有十六进制和八进制),您需要使用类似在线转换器的工具。
获取一个在线的二进制转十进制转换器,
将11001110转换为十进制,将10011000转换为十进制,执行&
操作,
然后将结果从十进制转换回二进制。
std::bitset
。 - chrisc++
自己编写它。这并不难。 - BoBTFish11001110
,你得到的将是十进制数,而不是二进制数,就像Luchian指出的那样。0b11001110
。前缀0b
在 gcc、clang 和 tcc 中表示你正在使用二进制系统。