面試題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; |