给定两个正整数A和B,把A变成B需要几位?也就是说A和B之间的位数有多少个是不同的?
来源:互联网 发布:手机淘宝账号在哪里 编辑:程序博客网 时间:2024/05/17 08:50
给定两个正整数A和B,把A变成B需要几位?也就是说A和B之间的位数有多少个是不同的?
本文的解决思路来自于互联网和一些自己的理解:
编程语言为:Java
首先求出两个数有多少个位数是相同的,即求出A和B的交集
其次,求出A和B一共在占了几位在同一个数中,即求出A和B的或运算
再次,对上面的结果进行异或,原理就是在A和B一共所占的位数(或运算)减去相同的(交运算)
然后在对得出的结果进行二进制1计数,详情可以看我上一篇的文章
public static int countDifferent(int a, int b) {
int value = (a&b)^(a|b);
return count2(value);
}
其实,上面的(a&b)^(a|b)也可以经过逻辑运算的化简直接变为a^b,具体过程自己去了解
或者你理解异或运算的含义,即求两个数的相异,也可以的出以上的答案。
本题目来自编程之美的扩展题
- 给定两个正整数A和B,把A变成B需要几位?也就是说A和B之间的位数有多少个是不同的?
- 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- 求正整数A和正整数B的二进制表示中有多少位是不同的
- 给出两个正整数A和B,计算A*B的值。保证A和B的位数不超过500位。
- 给出两个正整数A和B,计算A+B的值。保证A和B的位数不超过500位
- 编程之美课后题:求得两个正整数A和B的二进制表示有多少位不同
- 设a和b是两个正整数,a<=b,计算a和b之间约数个数最多的整数
- 整数A和B的二进制表示中有多少位是不同的
- 求整数A和整数B的二进制表示中有多少位是不同的?
- 两个int(32位)整数a和b的二进制表达中,有多少个位(bit)不同
- 整数A和B的二进制表示中有多少位不同
- 整数A和B的二进制表示中有多少位不同
- 如何求整数A和B的二进制表示中有多少位不同?
- 打印给定位数的a,b 组合
- 有两个序列a,b,要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
- 输入正整数A和正整数B,输出A和B的最大公约数和最小公倍数。
- 现在,有两个整数A和B,例如A是345,B是478,现在,需要把B插入到A里, 而A有三位,所以有四个位置选择,所得结果分别是: 478345, 347845, 344785, 345478 我们通过对比可以知道,在这当中最小的一个是344785
- vs2010编译glut-3.7
- Java高级特性之new一个内部类
- 1053. Path of Equal Weight——深搜
- 警惕租房的十大禁忌_家居风水自查
- 整数的拆分问题
- 给定两个正整数A和B,把A变成B需要几位?也就是说A和B之间的位数有多少个是不同的?
- servlet学习笔记(二)
- 我是不是你真疼爱的人 你为什么不说话
- Apache CXF Spring SOAP example
- hdu Disney's FastPass(状态压缩dp)
- JavaSwing图形界面编程之消息提示框(三)
- POJ-3261-Milk Patterns
- sql语句如何获得当前日期
- WebService简介[笔记]