算法分析:
- 使变量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