zoukankan      html  css  js  c++  java
  • 给定两个正整数A和B,把A变成B需要几位?也就是说A和B之间的位数有多少个是不同的?

    给定两个正整数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,具体过程自己去了解

    或者你理解异或运算的含义,即求两个数的相异,也可以的出以上的答案。


    本题目来自编程之美的扩展题

  • 相关阅读:
    登录后返回到登录页问题
    vue组件插槽
    js定义类
    arguments.callee用法
    深拷贝的原生js实现
    Hybrid APP架构设计思路
    使用vlfeat 包中遇到的问题
    tensorflow faster rcnn 代码分析一 demo.py
    labelImg 工具
    faster rcnn 做识别
  • 原文地址:https://www.cnblogs.com/shangwne/p/3617533.html
Copyright © 2011-2022 走看看