需要将一个数字更改为另一个数字

Bit*_*ker 10 c c# c++ algorithm

假设我有两个正数a和b.为了将a转换为b,必须反转多少位?我只想要计数而不是不同位的确切位置.

假设a = 10(1010)且b = 8(1000).在这种情况下,应该反转的位数等于1.

任何通用算法?

Pra*_*rav 25

解决方案很简单

完成!

  • 我同意这是一个正确答案,但是OP要求一个通用算法."计算结果中的设置位数"将是一个过高的指令,无法作为算法中的一个步骤.我不确定这个答案是否比其他答案好20个. (2认同)

Ita*_*aro 7

int a = 10;
int b = 8;

int c = a ^ b; //xor
int count = 0;
while (c != 0)
{
  if ((c & 1) != 0)
    count++;
  c = c >> 1;
}
return count;
Run Code Online (Sandbox Code Playgroud)