~0的结果是将所有二进制位全变为1,~0<<4的结果是右端低4位为0,~(~0<<4)的结果是右端低4位为1,其余各位全为0的数
说明:按上面的思想知,对一个无符号整数a,取出任意指定的右边开始的m位到n位则将b=a>>5换为b=a>>m,将c=~(~0<<4)改为c=~(~0<<(n-m+1))即可实现
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned int a,b,c,d;
printf("ÓÃÊ®Áù½øÖÆÊäÈëa:");
scanf("%x",&a);
b=a>>5;
c=~(~0<<4);
d=b&c;
printf("a:%x,%d\nd:%x,%d\n",a,a,d,d);
system("PAUSE");
return 0;
}
说明:按上面的思想知,对一个无符号整数a,取出任意指定的右边开始的m位到n位则将b=a>>5换为b=a>>m,将c=~(~0<<4)改为c=~(~0<<(n-m+1))即可实现