刷题-力扣-面试题 05.06. 整数转换

题目链接

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-integer-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

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

示例1:

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

示例2:

 输入:A = 1,B = 2
 输出:2

提示:

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

题目分析

  1. 根据题目描述,判断A和B的二进制中对应位置有几位不同
  2. A异或B,A与B对应位置不同为1,相同为0
  3. 再对A异或B的结果计算1的个数

代码

class Solution {
public:
    int convertInteger(int A, int B) {
        return __builtin_popcount(A^B);
    }
};
posted @ 2022-02-19 15:07  韩亚光  阅读(27)  评论(0编辑  收藏  举报