力扣面试题 27 - 整数转换

题目:

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

示例1:

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

示例2:

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

提示:

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

思路:

  1. 可以用异或找出有多少个不同的位。(相同为0,不同为1)
  2. 再统计1的个数,即得出有多少个不同的位

C代码如下:

cpp 复制代码
int convertInteger(int A, int B) {
    int num = A ^ B;  // 计算A和B的异或结果
    int cnt = 0;
    for (int i = 0; i < 32; i++) {
        if (num & 1) {  // 如果当前最低位是1,说明该位不同
            cnt++;
        }
        num = num >> 1;  // 右移一位
    }
    return cnt;  // 返回不同的位数
}

此题比较简单,没啥好说的~

相关推荐
paeamecium3 分钟前
【PAT甲级真题】- Student List for Course (25)
数据结构·c++·算法·list·pat考试
Book思议-11 分钟前
【数据结构】栈与队列全方位对比 + C 语言完整实现
c语言·数据结构·算法··队列
SteveSenna12 分钟前
项目:Trossen Arm MuJoCo
人工智能·学习·算法
NAGNIP24 分钟前
一文搞懂CNN经典架构-DenseNet!
算法·面试
道法自然|~30 分钟前
BugCTF黄道十二宫
算法·密码学
WHS-_-20222 小时前
Python 算法题学习笔记一
python·学习·算法
沉鱼.442 小时前
第六届题目
算法
黑眼圈子2 小时前
总结一下用Java做算法的常用类和方法
java·开发语言·算法
apcipot_rain2 小时前
天梯赛练习集 时间规划 限时复盘 中档题详解(L1-6~L2-4)
算法
再卷也是菜2 小时前
第一章、线性代数(2)高斯消元法
线性代数·算法