面试题 05.06:整数转换

简介: 面试题 05.06:整数转换

题目

题目链接

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

示例1:

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

示例2:

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

解题

方法一:位运算1

比较两个数的 对应的位是否相同。

class Solution {
public:
    int convertInteger(int A, int B) {
        int res=0;
        for(int i=0;i<32;i++){
            if((A&(1<<i))!=(B&(1<<i))){
                res++;
            }
        }
        return res;
    }
};

方法二:位运算2

使用异或,然后统计异或为1的位。

注意-1的右移是-1。因此不能使用while(A!=0)作为条件,要用for循环32次。

class Solution {
public:
    int convertInteger(int A, int B) {
        int res=0;
        A^=B;
        for(int i=0;i<32;i++){
            res+=(A&1);
            A>>=1;
        }
        return res;
    }
};
相关文章
|
7月前
|
C语言
C语言之将十进制整数转换为任意进制整数
C语言之将十进制整数转换为任意进制整数
160 0
|
3天前
|
Java
Java实现十进制到各种进制的转换
这段代码可以让用户输入一个十进制数,然后将其转换为二进制、八进制和十六进制表示。实现了基本的转换功能,满足你的要求。
26 0
|
3天前
|
小程序 C语言
【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。
【C语言】输入一个十进制正整数,将它对应的二进制数的各位逆序,形成新的十进制数输出。题目分析及拓展应用。
38 0
进制转换(二进制,八进制,十进制,十六进制)涵盖整数与小数部分,内容的图片全为手写【详细图解】
进制转换(二进制,八进制,十进制,十六进制)涵盖整数与小数部分,内容的图片全为手写【详细图解】
|
人工智能
进制数转换知识点总结
二进制和十六进制 用0和1表示各种信息 计算机的电路由逻辑门电路组成。一个逻辑门电路可以看成一个开关,每个开关的状态是“开"(高电位)或“关”(低电位),即对应于1或0
126 0
十进制转二进制的方法 + 写代码实现[C/C++]
整数十进制转二进制转换方法 + 如何用代码实现为主要内容 方法1:除二取余法 十进制数除2得商取余法:对十进制进行除法运算,十进制除以2可以得到一个商和余数 方法2:按权相加法 ......
435 1
|
算法
算法练习题(四)——十六进制和十进制的相互转换
算法练习题(四)——十六进制和十进制的相互转换
127 0
|
Python
LeetCode 989. 数组形式的整数加法
对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。
85 0
LeetCode 1317. 将整数转换为两个无零整数的和
LeetCode 1317. 将整数转换为两个无零整数的和
【程序填空】下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234
【程序填空】下面程序的功能是将一个整数字符串转换为一个整数,如”-1234”转换为-1234
186 0