您的位置:首页 > 其它

《Cracking the Coding Interview》——第5章:位操作——题目5

2014-03-19 06:24 441 查看
2014-03-19 06:22

题目:将整数A变成整数B,每次只能变一个二进制位,要变多少次呢。

解法:异或,然后求‘1’的个数。

代码:

// 5.5 Determine the number of bits required to convert integer A to B.
#include <cstdio>
using namespace std;

int numberOfOnes(unsigned int n)
{
int res = 0;

while (n != 0) {
n = n & (n - 1);
++res;
}

return res;
}

int main()
{
unsigned int a, b;

while (scanf("%u%u", &a, &b) == 2) {
printf("%d\n", numberOfOnes(a ^ b));
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐