给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
2014-10-31 10:53
344 查看
解法一:举例说明,为了减少复杂度,就使用八位二进制吧。设 A = 0010 1011, B = 0110 0101.
1. C = A & B = 0010 0001;
2. D = A | B = 0110 1111;
3. E = C ^ D = 0100 1110;//异或运算
4. 结果E中有4个1,那么也就是说将A变成B,需要改变4位(bit)。
至于如何判断E的二进制表示中有几个1,可以采用快速移位与方法。
算法原理如下:
1. A & B,得到的结果C中的1的位表明了A和B中相同的位都是1的位;
2. A | B, 得到的结果D中的1的位表明了A和B在该位至少有一个为1的位,包含了A 与 B 都是1的位数,
经过前两步的位运算,,C 中1的位表明了A 和 B在该位都是1,D中为0的位表明了A 和 B 在该位都是0 ,所以进行第三步。
3. C ^ D,E 中为1的位表明了A 和 B不同的位。
1. C = A & B = 0010 0001;
2. D = A | B = 0110 1111;
3. E = C ^ D = 0100 1110;//异或运算
4. 结果E中有4个1,那么也就是说将A变成B,需要改变4位(bit)。
至于如何判断E的二进制表示中有几个1,可以采用快速移位与方法。
算法原理如下:
1. A & B,得到的结果C中的1的位表明了A和B中相同的位都是1的位;
2. A | B, 得到的结果D中的1的位表明了A和B在该位至少有一个为1的位,包含了A 与 B 都是1的位数,
经过前两步的位运算,,C 中1的位表明了A 和 B在该位都是1,D中为0的位表明了A 和 B 在该位都是0 ,所以进行第三步。
3. C ^ D,E 中为1的位表明了A 和 B不同的位。
相关文章推荐
- 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- 给定两个正整数(二进制形式表示)A和B,问把A变为B需要改变多少位(bit)?也就是说,整数A和B的二进制表示中有多少位是不同的?
- c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- c语言:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- C++ 算法之 输入两个整数m n,求计算需要改变m的二进制表示中的多少位才能得到n
- 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。
- 输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n
- 求出两个int(32位)整数m和n的二进制表达中,有多少bit位不同
- 【C语言】【笔试题】两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 【C语言】【笔试题】两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 给定两个正整数A和B,把A变成B需要几位?也就是说A和B之间的位数有多少个是不同的?
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?(异或的用法)
- 两个整数二进制表达中,有多少个位(bit)不同
- 1.编程实现: 两个int(32位)整数m和n的二进制表达中, 有多少个位(bit)不同? 输入例子: 1999 2299 输出例子:7
- 两个整数二进制表达中,有多少个位(bit)不同
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?(异或的用法)
- 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同