[英]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,这不是我的预期
11001110
和10011000
不是二进制数(至少在编译器的脑海中)。
二进制11001110
是206
,和10011000
是152
,所以你真的想(我认为):
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.