c ++中的按位运算,如何实际使用它?

时间:2013-05-14 16:02:27

标签: c++ bitwise-operators

我理解

  11001110
& 10011000
= 10001000

但我想自己测试一下

所以我声明了unsigned char并打印出来,但它只是让我空白。

unsigned char result;
result= 11001110 & 10011000;

cout<<result;

还使用unsigned int进行了测试,但是它给了我0,这不是我预期的

5 个答案:

答案 0 :(得分:3)

1100111010011000不是二进制数(至少在编译器的脑海中)。

二进制1100111020610011000152,因此您实际需要(我认为):

result = 206 & 152;

或使用std::bitset然后将结果打印为二进制文件。

答案 1 :(得分:3)

您可能需要考虑使用hex进行测试

int a = 0xCE;    // 11001110
int b = 0x98;    // 10011000

int result = a & b;

cout << hex << result << endl;

或编写一个函数将result转换为二进制文件。

答案 2 :(得分:1)

在c ++中,您必须使用十六进制来表示位数。因为11001110是0XCE而10011000是0X98

unsigned char b1 = 0XCE;
unsigned char b2 = 0X98;
unsigned char b = b1 & B2;

答案 3 :(得分:0)

11001110 in binary不是十进制数。

由于c ++没有二进制说明符(但有十六进制和八进制),你需要使用类似在线转换器的东西。

获取在线二进制到十进制转换器, 将11001110转换为十进制,将10011000转换为十进制,执行&操作, 然后将结果从十进制转换回二进制。

答案 4 :(得分:0)

如果你写11001110,你会得到一个小数,而不是二进制数,就像Luchian指出的那样。

要获取二进制文件,您必须编写0b11001110 ...前缀0b表示在gcc,clang和tcc中,您使用的是二进制系统。

我不知道,Visual C ++编译器将使用此前缀做什么。