面试题65:不用加减乘除做加法
题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。
#include<iostream>
#include<algorithm>
using namespace std;
int Add(int num1, int num2){
int sum, carry;
do{
sum=num1^num2;
carry=(num1&num2)<<1;
num1=sum;
num2=carry;
}while(num2!=0);
return num1;
}
int main(){
printf("%d", Add(10, 5));
return 0;
}
相关问题:不使用新的变量,交换两个变量的值。比如有两个变量 a、b,我们希望交换它们的值。有两种不同的方法:
基于加减法 | 基于异或运算 |
---|---|
a=a+b; | a=a^b; |
b=a-b; | b=a^b; |
a=a+b; | a=a^b; |