4

我明白

  11001110
& 10011000
= 10001000

但我想自己测试一下

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

unsigned char result;
result= 11001110 & 10011000;

cout<<result;

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

4

5 回答 5

3

11001110并且10011000不是二进制数(至少在编译器的脑海中)。

二进制11001110is20610011000is 152,所以你实际上想要(我认为):

result = 206 & 152;

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

于 2013-05-14T16:03:59.807 回答
3

您可能要考虑hex用于测试

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

int result = a & b;

cout << hex << result << endl;

或编写一个函数来转换result为二进制。

于 2013-05-14T16:07:17.127 回答
1

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

unsigned char b1 = 0XCE;
unsigned char b2 = 0X98;
unsigned char b = b1 & B2;
于 2013-05-14T16:10:08.873 回答
0

二进制中的 11001110 与十进制中的数字不同。

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

找一个在线的二进制转十进制转换器,将11001110转为十进制,10011000转为十进制,进行&运算,然后将结果从十进制转回二进制。

于 2013-05-14T16:05:34.667 回答
0

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

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

我不知道,Visual C++ 编译器会用这个前缀做什么。

于 2013-05-14T16:07:10.330 回答