整数转化

来源:互联网 发布:容易猝死的职业知乎 编辑:程序博客网 时间:2024/06/07 18:54

题目描述

编写一个函数,确定需要改变几个位,才能将整数A转变成整数B。

给定两个整数int A,int B。请返回需要改变的数位个数。

测试样例:

10,5

返回:4

思路:A 需要变换 多少位 才能得到B,位变换无非就是0-1,1-0的过程所以,

A和B之间 有多少的不同的0-1,1-0的变换就有需要多少位的变换,

由于异或操作是 相同为0 不同为1 也即1-0,0-1的结果为1,也就是转换成A^B之后 1 的个数求解;

代码如下:

public int calcCost(int A, int B) {          int res = A ^ B;// ^这个是按位异或,当比较的两个位数不一样的时候为1         int count = 0;         while(res > 0){         if((res&1)!=0){         count++;         }         res >>= 1;         }         return count;    }



0 0
原创粉丝点击