这个咋说呢?首先就要想,加减法是这样的,先算不进位,然后再进位,这个也是一样。
- a ^ b表示不进位情况
- a & b表示进位的情况
这个计算就是这样,12+18 = 10 +20 就是进位的和+没进位的和emmm由于这个不能有加法,所以只能不停的迭代。就是那个循环
#include<stdio.h>
int AddNumThoughBit(int a,int b)
{
int sum; //不含进位的和
int add1; //进位
while(b != 0)
{
sum = a^b;
add1 = (a&b)<<1;
a = sum;
b = add1;
}
return a;
}
int main()
{
int m,n;
while(scanf("%d %d",&m,&n) != EOF)
printf("%d\n",AddNumThoughBit(m,n));
}