编程之美扩展问题总结2.1(2)

问题描述:给定两个正整数AB,问AB的二进制表示中有多少位不同?

解题思路:对AB异或操作,转换为求一个二进制数中位数为1的问题。

int Count(int A,int B)
{
     int num = 0;
     int v = A^B;
     while(v)
     {
         if(v % 2 == 1)
         {
             num++;
         }
         v = v/2;
     }
     return num;
}   

int Count(int A,int B)
{
     int num = 0;
     while(v)
     {
        num += v & 0x01;
        v >>= 1;
     }
     return num;
}   

int Count(int A,int B)
{
     int num = 0;
     while(v)
     {
        v &= (v-1);
        num++;
     }
     return num;
}   


你可能感兴趣的:(编程之美扩展问题总结2.1(2))