我不明白为什么 3 & 0x1111 = 1 ?似乎是:
for any unsigned 32-bit integer i, i & 0x1111 should be i, right?
但是当我在 ubuntu 14.04 上尝试这个时,我得到了 3 & 0x1111=1
。为什么?
int main() {
unsigned int a =3;
printf("size of a= %lu\n",sizeof(a));
printf("value of 3 & 0x1111= %d\n",a & 0x1111);
return 0;
}
最佳答案
将它们都转换成二进制:
0x1111 = 0001 0001 0001 0001
3 = 0000 0000 0000 0011
当您一点一点地&
它们时,您还期望什么?
关于c - 为什么 (3 & 0x1111) = 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254866/