计算两个数的不同比特位
2017-11-09 23:53
232 查看
一 、题目:
编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
二、解题思路:
利用异或运算符(^)把输入的两个数进行异或运算(m^n),找出运算结果的所有1的个数,即不同比特位个数。
三、知识点解析
1、异或运算符 ^ (异或运算符运算:相同异或为0 ,不同异或为1 )
2、移位运算符(此知识点的讲解请看上一篇博客)
四、运行结果
五、叨叨叨,今天的代码很简单,课业有点多,但还是习惯每天一篇。
编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
二、解题思路:
利用异或运算符(^)把输入的两个数进行异或运算(m^n),找出运算结果的所有1的个数,即不同比特位个数。
三、知识点解析
1、异或运算符 ^ (异或运算符运算:相同异或为0 ,不同异或为1 )
2、移位运算符(此知识点的讲解请看上一篇博客)
#include<stdio.h> int main() { int m = 0; int n = 0; int i = 32; int ret = 0; int count=0; printf("请输入两个数:>"); scanf("%d%d",&m,&n); ret = m^n; while (i--) { if(1==(ret&1)) { count++; } ret=ret>>1; } printf("有 %d 个比特位(bit)不同 \n",count); return 0; }
四、运行结果
五、叨叨叨,今天的代码很简单,课业有点多,但还是习惯每天一篇。
相关文章推荐
- 两个数中有几个比特位不同
- 求两个数之间有多少个比特位不同
- Java中不同数值类型间转换与计算精度丢失问题
- 不用任何操作符(包括位运算符)计算两个数的加法
- Android不同分辨率图片实际显示大小的计算
- 编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
- 云计算与虚拟化到底有何不同?
- 递归法计算从n个人中选选k个人组成一个委员会的不同组合数
- 计算两个数的最小公倍数
- 不使用任何判断,如if,?:,switch,计算两个数中的最大值!
- 计算字符串的长度:strlen 、sizeof的不同
- JAVA类型优先级,以决定不同类型计算后的类型
- Android不同分辨率图片实际显示大小的计算
- Spark Streaming 流计算优化记录(2)-不同时间片数据流的Join
- C#与PHP的md5计算结果不同的解决方法
- 第三周周末------计算圆的面积和体积两种不同输出方式
- 计算不同形状的面积
- 根据不同日期计算天数差
- [原创]java WEB学习笔记41:简单标签之带属性的自定义标签(输出指定文件,计算并输出两个数的最大值 demo)
- [LeetCode] Count Numbers with Unique Digits 计算各位数值不同的数的个数