什么是掩码
掩码是通过按位与运算,设置为开(1)或者关(0)的位组合,例如我们定义一个符号常量MASK为2,(二进制形式为00000010),只有1号位是1,那我们将MASK 与任意值按位与,那么任意值除1号位不变化之外,其他位都会变为0,因为按位
与(&) 任何位与0组合都会变成0,这个过程叫做使用掩码
利用掩码计算十进制的二进制表示
#include <stdio.h>
#include <limits.h>
char * itobs(int,char *);
void show_sbtr(const char *);
int main (void){
char bin_str[CHAR_BIT*sizeof(int)+1];
int number;
puts("Enter integers and see them in binary:");
puts("Non-numeric input terminate program:");
while (scanf("%d",&number)==1){
itobs(number,bin_str);
printf("%d is ", number);
show_sbtr(bin_str);
putchar('\n');
}
puts("Bye!");
return 0;
}
char * itobs(int n,char * ps){
int i;
const static int size=CHAR_BIT*sizeof(int);
for (i = size-1; i>=0 ; i--,n>>=1) {
ps[i]=(01&n)+'0';
}
ps[size]='\0';
return ps;
}
void show_sbtr(const char * str){
int i=0;
while (str[i]){
putchar(str[i]);
if(++i%4==0&&str[i]){
putchar(' ');
}
}
}
在函数 itobs 中01&n 表示的就是n 的最后一位的值,然后每次循环 n 右移 1位,最终就是n的二进制表示了