我理解
11001110
& 10011000
= 10001000
但我想自己测试一下
所以我声明了unsigned char并打印出来,但它只是让我空白。
unsigned char result;
result= 11001110 & 10011000;
cout<<result;
还使用unsigned int进行了测试,但是它给了我0,这不是我预期的
答案 0 :(得分:3)
11001110
和10011000
不是二进制数(至少在编译器的脑海中)。
二进制11001110
为206
,10011000
为152
,因此您实际需要(我认为):
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 ++编译器将使用此前缀做什么。