十進制轉換成二進制
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