面试问题:将一个整数转换为另一个整数所需的位交换数

use*_*090 6 bit-manipulation

我的一个朋友在接受采访时被问到这个问题.我无法找到解决方案.题 -

编写一个函数来计算将一个整数转换为另一个整数所需的位交换数.

Tus*_*pta 7

可用于确定哪些位不同的位操作是xor.

xor中的每个1将告诉两个整数之间的不同位.

int getBitSwapCount(int x,int y){

int count = 0;

for(int z = x^y; z!=0; z = z>> 1)
{
   count += z & 1;
}
return count; 
Run Code Online (Sandbox Code Playgroud)

}

  • 不同位的数量与所需的交换数量相同 (6认同)