十进制转换成二进制
void change (int num)
{
unsigned int temp;
unsigned int mask = 1;
int i;
for(i = 31; i >= 0;i--)
{
temp = ((unsigned int)num >> i) & mask;
printf("%d",temp);
if( i % 4 == 0)
{
printf("\n");
}
}
}
生成掩码的方式1
//将从左边开始的,第N位到M位置1
0000 0000 0000 0000 0000 1111 0000 0000
void mask(int n,int m);
{
unsigned int temp;
temp = (unsigned int )~0 >> (32-(n - m +1));
temp = temp << n;
change(temp);
printf("\n");
}
生成掩码方式2
利用向左移×2,向右移÷2
第N~M为1的十进制是2^(m+1)-2^n;
void mask(int n,int m)
{
unsigned int temp;
temp = pow(2,m+1)-pow(2,n);
change(temp);
printf("\n");
}
函数中调用了pow()次方函数,所以要加头文件#include<math.h>
linux下用GCC调试调用该函数的库是要加gcc -lm