把A变为B需要改变多少位(bit)

作者: 半亩房顶 | 来源:发表于2019-06-26 10:29 被阅读0次

题目

题目的意思就是,如何判断A和B的二进制表示中有多少位(bit)不一样?

思路

这是编程之美当中一道练习题,我也就邯郸学步的想了一个算法:

  1. 先做位与运算 A & B, 得到结果C;
  2. 接着做位或运算 A | B,得到结果D;
  3. 再做一次异或运算,不过操作的数不是 A 与 B,而是 C ^ D , 得到结果E;
  4. 判断结果 E 其二进制表示中1的个数就得到结果啦。

举例说明

为了减少复杂度,用八位二进制为例。设 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,请参考https://www.jianshu.com/p/3e54f26c11a4

算法原理

  1. A & B,得到的结果C中的1的位表明了A和B中相同的位都是1的位;
  2. A | B, 得到的结果D中的1的位表明了A和B在该位至少有一个为1的位,包含了A 与 B 都是1的位数,
  3. 经过前两步的位运算,,C 中1的位表明了A 和 B在该位都是1,D中为0的位表明了A 和 B 在该位都是0 ,所以进行第三步C ^ D,E 中为1的位表明了A 和 B不同的位。

以上,欢迎大家指点、交流。


欢迎大家关注我的公众号


半亩房顶

相关文章

  • 把A变为B需要改变多少位(bit)

    题目 题目的意思就是,如何判断A和B的二进制表示中有多少位(bit)不一样? 思路 这是编程之美当中一道练习题,我...

  • 如果要将整数A转换为B,需要改变多少个bit位?

    问题:如果要将整数A转换为B,需要改变多少个bit位? 样例如把31转换为14,需要改变2个bit位。(31)10...

  • 181. 将整数A转换为B

    如果要将整数A转换为B,需要改变多少个bit位?如:如把31转换为14,需要改变2个bit位。 很简单,逐位做异或...

  • OJ Lintcode 将整数A转换为B

    如果要将整数A转换为B,需要改变多少个bit位?您在真实的面试中是否遇到过这个题?Yes样例如把31转换为14,需...

  • Swift 类和对象,面向对象 7.24

    Tips:1位:1 bit 1b1字节:8bit Byte 1B1KB = 1024B1MB ...

  • 操作系统发展历史

    二进制 编码 ASSIC 每一个字符统一都需要8个bit来存储 计算机容量 1位 = 1bit 8bit = 1b...

  • bit Byte Kb KB之间的关系

    单位换算 bit就是位,也叫比特位,是计算机表示数据最小的单位。B是Byte的缩写,意思是字节;b是bit的缩写,...

  • 2017/12/19

    异步通信规定传输的数据格式由起始位(start bit)、数据位(data bit)、奇偶校验位(parity b...

  • 第一弹

    1)字节,字,位,比特,千字节: 1比特(bit) = 1位(bit)1字(word)= 2字节(byte,B)=...

  • 汇编基础

    1. 数据存储的最小单位是:位(bit、b、比特),每个0或1就是一个位(bit)。8位 = 1字节(byte)...

网友评论

    本文标题:把A变为B需要改变多少位(bit)

    本文链接:https://www.haomeiwen.com/subject/glmqcctx.html