题目
如果要将整数A转换为B,需要改变多少个bit位?
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
思路
要考虑负数的问题
如果 一正一负 将他们去全部变成正数 后要+1个符号为的变化
都是负数 只要变成正数进行比较就行了
C++代码
int bitSwapRequired(int a, int b) { // write your code here int count = 0; if((a < 0 && b >= 0) || (a >= 0 && b < 0)) count = 1; if(a < 0) { a += 2147483648; } if(b < 0) { b += 2147483648; } int c = a ^ b; while(c) { if(c % 2 == 1) count++; c = c >> 1; } return count; }
时间: 2024-12-20 16:22:30