位运算例子
来源:互联网 发布:网络大V发布谣言 编辑:程序博客网 时间:2024/05/22 07:52
题目1:从键盘上输入1个正整数给int变量num,输出由8~11位构成的数(从低0号开始编号)
基本思路:
1.截取8~11位的数,位移到0~3位
a)构建8~11位上为1其余为0的数
b)位与输入数
c)得到的结果右移8位
2.先将8~11位移到0~3位,截取0~3位
a)输入数右移8位
b)构建0~3位为1其余为0的数
c)位与,得到结果
仔细考察构建的辅助数(位与时用到的数,因为起到了“采用某些位,无视,即屏蔽其他位”的左右,所以也叫做mask),
构建mask的复杂程度,这里采用方案2
main()
{
int num, mask;
printf("Input a integer number: ");
scanf("%d",&num);
/*将num右移8位,将8~11位移到低4位上*/
num >>= 8;
/*间接构造1个低4位为1、其余各位为0的整数*/
mask = ~ ( ~0 << 4);
//打印结果
printf("result=0x%x\n", num & mask);
}
程序运行情况:
Input a integer number:1000 ←┘
result=0x3
程序说明:~ ( ~0 << 4)
按位取0的反,为全1;左移4位后,其低4位为0,其余各位为1;
再按位取反,则其低4位为1,其余各位为0。这个整数正是我们所需要的。
题目2:从键盘上输入1个正整数给int变量num,按二进制位输出该数。
#include "stdio.h"
main()
{
int num, mask, i;
printf("Input a integer number: ");
scanf("%d",&num);
/*构造1个最高位为1、其余各位为0的整数(屏蔽字)*/
mask = (1<<sizeof(int) – 1);
printf("%d=" , num);
for(i=1; i<= sizeof(int); i++)
{
putchar(num&mask ? ’1’ : ‘0’); /*输出最高位的值(1/0)*/
num <<= 1; /*将次高位移到最高位上*/
if( i%4==0 ) putchar(‘,’); /*四位一组,用逗号分开*/
}
printf("\bB\n");
}
程序运行情况:
Input a integer number:1000
1000=0000,0011,1110,1000B
- java位运算例子
- 位运算例子
- 位运算 几个例子
- 位运算应用例子
- C位运算的使用例子
- Android中的位运算的例子(一)
- 不良代码展示-Android中的位运算的例子(二)
- 位运算实现加法的一个简单例子
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 来电防火墙——学习记录
- cdecl、stdcall、fastcall、declspec 的用法和区别
- 免费素材下载
- UNIX创建临时文件
- CXF
- 位运算例子
- WORKGROUP无法访问,您可能没有权限使用网络资源,请与这台服务器的管理员联系以查明您是否有访问权限。
- ZK ACL访问控制处理流程
- 如何让网站秒收
- WebService 开发随笔
- Matlab “Out of memory”解决办法
- 套接字传输文件的试验
- 从头到尾搭建ROR服务器
- 股票走势分析算法 -协方差,标准差,相关系数