给定两个正整数A和B,把A变成B需要几位?也就是说A和B之间的位数有多少个是不同的?
2013-10-03 17:21
357 查看
给定两个正整数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,具体过程自己去了解
或者你理解异或运算的含义,即求两个数的相异,也可以的出以上的答案。
本题目来自编程之美的扩展题
本文的解决思路来自于互联网和一些自己的理解:
编程语言为: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需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- 给定正整数n,计算出n个元素的集合{1,2,....,n}可以划分为多少个不同的非空集合
- 给定两个整形,求彼此二进制的不同位数
- 编程之美课后题:求得两个正整数A和B的二进制表示有多少位不同
- 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string stri
- 两个openCV补充函数。用于不同位数图像之间转换的。。
- 确定两串乱序同构 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个
- 给定正整数n,计算出n个元素的集合{1,2,....,n}能够划分为多少个不同的非空集合
- 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。 给定一个string stringA和一个string stri
- 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。
- 二、给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。
- Help Tomisu UVA - 11440 难推导+欧拉函数,给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<=N<=1e7, 1<=M<=N, N-M<=1E5) 输出答案除以1e8+7的余数。
- 给定正整数n和m,计算出n个元素的集合{1,2,...,n}可以划分为多少个不同的由m个元素组成的子集合
- 17周课后自主-项目四-2-计算两个日期之间差了多少天
- 两个不同数据库之间的两个表如何关联起来查询数据
- 给定N是一个正整数,求比N大的最小“不重复数”,这里的不重复是指没有两个相等的相邻位,如1102中的11是相等的两个相邻位故不是不重复数,而12301是不重复数。
- 输入两个数a,b,统计a,b之间一共有多少个质数