AND操作掩码位值。按位&
屏蔽第六位,使其值在最终计算中重置为0
。
示例代码
#include <stdio.h>
#define SET 223
char *to_binary(int n);
int main()
{
int bor,result;
printf("输入一个在 0 - 255 之间的数字: ");
scanf("%d",&bor);
result = bor & SET;
printf("\t%s\t%d\n",to_binary(bor),bor);
printf("&\t%s\t%d\n",to_binary(SET),SET);
printf("=\t%s\t%d\n",to_binary(result),result);
return(0);
}
char *to_binary(int n)
{
static char bin[9];
int x;
for(x=0;x<8;x++)
{
bin[x] = n & 0x80 ? '1' : '0';
n <<= 1;
}
bin[x] = '\0';
return(bin);
}
编译并执行上面示例代码,得到以下结果:
hema@ubuntu:~/book$ gcc main.c
hema@ubuntu:~/book$ ./a.out
输入一个在 0 - 255 之间的数字: 178
10110010 178
& 11011111 223
= 10010010 146