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

相关推荐
代码无bug抓狂人几秒前
动态规划(附带入门例题)
c语言·算法·动态规划
weixin_4454023019 分钟前
C++中的命令模式变体
开发语言·c++·算法
季明洵20 分钟前
C语言实现顺序表
数据结构·算法·c·顺序表
南风知我意95721 分钟前
【前端面试2】基础面试(杂项)
前端·面试·职场和发展
Hgfdsaqwr26 分钟前
实时控制系统优化
开发语言·c++·算法
2301_821369611 小时前
嵌入式实时C++编程
开发语言·c++·算法
sjjhd6521 小时前
多核并行计算优化
开发语言·c++·算法
weixin_395448911 小时前
main.c_cursor_0130
前端·网络·算法
半壶清水2 小时前
[软考网规考点笔记]-操作系统核心知识及历年真题解析
网络·网络协议·算法
Tansmjs2 小时前
实时数据可视化库
开发语言·c++·算法