计算要翻转以将A转换为B的位数

时间:2014-12-18 07:23:28

标签: bit-manipulation bit bitwise-operators hamming-distance

假设我有两个数字A和B.我需要找出需要更改多少位来将A转换为B.

像:

A = 1101101
B = 1011011
     ^^ ^^

这里,我们需要改变4位将A转换为B

我该怎么做?

2 个答案:

答案 0 :(得分:2)

你可以这样做:

int need=__builtin_popcountll(A^B);
cout<<need;

答案 1 :(得分:1)

有一个简单的解决方案:

A = 1101101
B = 1011011
     ^^ ^^
C = 0110110 (A ^ B)
     ^^ ^^  (count set bit)