写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
while(num2!=0){
int tem=num1^num2;
int carry=(num1&num2)<<1;
//进位的和没进位的在相加
num1=tem;
num2=carry;
//num2变成0 和就为num1的值
}
return num1;
#二进制的运算
* A+B=CD (C:表示进位的,D表示没有进位的部分)
* A 0 0 1 1
* +
* B 0 1 0 1
* =
* C 0 0 0 1
* D 0 1 1 0
- D=A^B (A与B的异或,不同就为1),表示没有进位的数
- C=A&B (A与B的与运算),进位的数 对于进位的数 向左移移位 (A&B)<<1
#在计算机中任何的两个数相加都是是哟二进制的加法
* A+B=没有进位的+进位的数(egD)
=A^B + (A&B)<<1
* 每次向左移移位 就会在后面添加0,(eg:int 32位,一直左移后改数就会成为0,最后的和)