演算法--兩種方法實現一個Add函式,讓兩個整數相加,但是不能使用+、-、*、/等四則運算子。
阿新 • • 發佈:2019-01-04
方法一:(網上都解釋的很好 這裡就不贅述了)
int Add1(int num1,int num2)
{
int sum, carry;
do
{
//因為位運算加法,0+1=1,1+0=1,0+0=0,1+1=0(但是要進位),所以跟異或有點類似
//但是當num1&num2的時候,當為一的時候需要左移一位,表示進位。
sum = num1^num2;
carry = (num1&num2) << 1;
//把sum給num1,進位給num2,當進位為0的時候,表示沒有進位
num1 = sum ;
num2 = carry;
} while (num2 != 0);
return num1;
}
方法二:利用陣列名+偏移位數的方法
int Add2(int num1,int num2)
{
//這裡本來一行程式碼足以,但是為了更好地分析,這裡寫兩行程式碼。
char* n1 = (char*) num1;
return int(&(n1)[num2]);
}