繁体   English   中英

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

[英]bitwise operations in c++, how to actually use it?

我明白

  11001110
& 10011000
= 10001000

但我想自己测试一下

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

unsigned char result;
result= 11001110 & 10011000;

cout<<result;

也用unsigned int测试,但它给了我0,这不是我的预期

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

二进制11001110206 ,和10011000152 ,所以你真的想(我认为):

result = 206 & 152;

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

您可能需要考虑使用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转换为十进制,执行&操作,然后将结果从十进制转换回二进制。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM