#include <stdio.h>
void main ()
{
printf("0 & 0 is %d\n", 0 & 0);
printf("0 & 1 is %d\n", 0 & 1);
printf("1 & 1 is %d\n", 1 & 1);
printf("1 & 2 is %d\n", 1 & 2);
printf("15 & 127 is %d\n", 15 & 127);
}
谁能帮我解释一下么?谢谢咯
#include <stdio.h>
void main ()
{
printf("0 & 0 is %d\n", 0 & 0);
printf("0 & 1 is %d\n", 0 & 1);
printf("1 & 1 is %d\n", 1 & 1);
printf("1 & 2 is %d\n", 1 & 2);
printf("15 & 127 is %d\n", 15 & 127);
}
谁能帮我解释一下么?谢谢咯
上面的回答是错误的!
&是位运算符不是逻辑运算符。
结果是:
0 & 0 is 0 //解释:0和0所有32位(2进制数)都是0,所以每一位上求与为0,所以32位0就是整数0;
0 & 1 is 0 //解释:0的所有32位(2进制)都是0,所以每一位与别的数的位求与均为0,所以32位0就是整数0;
1 & 1 is 1 //解释:1的第一位为1,其他高位均为0,则求与后第一位为1,高位为0,则结果为1;
1 & 2 is 0 //解释:1的第一位为1,其他高位均为0,2的第二位为1其他位为0,则按位求与后结果为32位0,即整数0;
15 & 127 is 15 //解释:由于127的低7位均为1,则与15按位求与仍为15,其他高位按位求与为0,则结果为整数15。
上面说的是逻辑运算的结果。
0与任何数相与为0,任何非0的数为真。所以结果分别为 0,0,1,1,1