基本的思想:一位一位的判断,不过这里考虑全是整数的情况:
#include <iostream>
using namespace std;
//最原始的,一位一位判断,不懂的话用几个数字带进去试试
int main()
{
//a,b是那两个整数,我这里没有考虑负数
int a = 63, b = 1 , count = 0,add = 0;
while (a | b != 0)
{
if ((a & b + add) & 1 == 1)//用0x00000001来判断每一次相加,最后一位是否有进位
{
add = 1;
count++;
}
else
{
add = 0;
}
a = a >> 1;
b = b >> 1;
}
cout<<count<<endl;
return 0;
}