算法分析:
- 使变量num右移8位,将原来的8~11位移到低4位上
- 构造一个低4位为1,其余位为0的整数(0000 0000 0000 1111)
- 与变量num进行按位与运算
代码如下:
#include<stdio.h>
int main(void)
{
int num, mask;
printf("输入一个正整数: ");
scanf("%d",&num);
num = num>>8;
mask = ~((~0)<<4);
//(~0) 1111 1111 1111 1111
//(~0)<<4 1111 1111 1111 0000
//~((~0)<<4) 0000 0000 0000 1111
printf("结果为: 0x%x\n",num&mask);
//0x%x 输出十六进制
//num&mask 按位与运算
return 0;
}
结果如下:
1000 二进制表示:0011 1110 1000
0x3 二进制表示:0011