按位运算产生意外输出
Bitwise operation producing unexpected output
#include<stdio.h>
int main(void)
{
int a=0x11;
printf("\n %d",a);
int b=10;
int c=(a&b);
printf("\t %d",c);
return 0;
}
这个程序的o/p是
17 0
但我希望程序对位进行操作,从而导致
17 16
为什么输出是0?
在您的例子中,b
的十进制值为 10,而不是 16 进制的 10。更改
int b=10;
至
int b=0x10;
用二进制表示0x11
是
0001 0001
而 10
是
0000 1010
如您所见,这些值没有共同的 1
位。因此,这些值之间的按位与运算结果为0
。您为什么期望它产生 16
?
#include<stdio.h>
int main(void)
{
int a=0x11;
printf("\n %d",a);
int b=10;
int c=(a&b);
printf("\t %d",c);
return 0;
}
这个程序的o/p是
17 0
但我希望程序对位进行操作,从而导致
17 16
为什么输出是0?
在您的例子中,b
的十进制值为 10,而不是 16 进制的 10。更改
int b=10;
至
int b=0x10;
用二进制表示0x11
是
0001 0001
而 10
是
0000 1010
如您所见,这些值没有共同的 1
位。因此,这些值之间的按位与运算结果为0
。您为什么期望它产生 16
?