力扣面试题 27 - 整数转换
题目:
整数转换。编写一个函数,确定需要改变几个位才能将整数A转成整数B。
示例1:
输入:A = 29 (或者0b11101), B = 15(或者0b01111) 输出:2
示例2:
输入:A = 1,B = 2 输出:2
提示:
- A,B范围在[-2147483648, 2147483647]之间
思路:
- 可以用异或找出有多少个不同的位。(相同为0,不同为1)
- 再统计1的个数,即得出有多少个不同的位
C代码如下:
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; // 返回不同的位数
}
此题比较简单,没啥好说的~
原文地址:https://blog.csdn.net/chamao_/article/details/144106321
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!