算法分析:
- 使变量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 1111printf("结果为: 0x%x\n",num&mask);//0x%x  输出十六进制//num&mask  按位与运算return 0;
}结果如下:

1000 二进制表示:0011 1110 1000
0x3 二进制表示:0011