1. 程式人生 > >演算法--兩種方法實現一個Add函式,讓兩個整數相加,但是不能使用+、-、*、/等四則運算子。

演算法--兩種方法實現一個Add函式,讓兩個整數相加,但是不能使用+、-、*、/等四則運算子。

方法一:(網上都解釋的很好 這裡就不贅述了)

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]);
}