LeetCode面试题05.06

美好的一天,从力扣开始

王子公主请看题

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

示例1:

复制代码
 输入:A = 29 (或者0b11101), B = 15(或者0b01111)
 输出:2

示例2:

复制代码
 输入:A = 1,B = 2
 输出:2

提示:

  1. A,B范围在[-2147483648, 2147483647]之间

根据提示不难发现a,b都是int类型,我们知道int对应32个比特位,要将a转化为b,其实就是把a的二进制改为b的二进制,那我们只需要找到两个数字有多少个比特上的数字不同就行了。这里就用到了^,他是相同则为0,不同则为1,我们把a,b32个比特位挨个通过^比较一番即可

代码如下

int convertInteger(int A, int B)

{

int a = 0;

for (int i = 0; i < 32; i++)

{

if (((A >> i) & 1)^((B >> i) & 1))

a++;

}

return a;

}

AC

相关推荐
业精于勤的牙4 小时前
浅谈:算法中的斐波那契数(二)
算法·职场和发展
不穿格子的程序员4 小时前
从零开始写算法——链表篇4:删除链表的倒数第 N 个结点 + 两两交换链表中的节点
数据结构·算法·链表
liuyao_xianhui4 小时前
寻找峰值--优选算法(二分查找法)
算法
dragoooon344 小时前
[hot100 NO.19~24]
数据结构·算法
Tony_yitao6 小时前
15.华为OD机考 - 执行任务赚积分
数据结构·算法·华为od·algorithm
C雨后彩虹7 小时前
任务总执行时长
java·数据结构·算法·华为·面试
风筝在晴天搁浅7 小时前
代码随想录 463.岛屿的周长
算法
一个不知名程序员www7 小时前
算法学习入门---priority_queue(C++)
c++·算法
TL滕8 小时前
从0开始学算法——第十八天(分治算法)
笔记·学习·算法