不用 實現兩個數相加

2021-06-18 06:33:12 字數 631 閱讀 8097

方法一 用邏輯運算

a^b 表示a+b 中每位不進製的和,

(a&b) <<1   二進位制加法 1&1=1,把1左移以為10,1+1=10,表示a+b 所有進製;

思想是兩個數字相加中能分解成

不進製的和  + 每一位相加的進製

a+b = a^b +(a&b)<<1

如果a&b==0的時候

a+b=a^b;

負整數運算也可以,因為補碼運算,不存在減法。

所以反覆迭代,一直到所有的進製為0

long add( long a, long b)

return sum;

}

方法二

利用指標運算

只適應正整數,並且a, b ,a+b 均小於2^32-1;

看看陣列 char array[b],array[b]如何取得 資料的第b+1的位址了,相當於address(array)+b

array[b]的位址,等於 address(array)+b

如果a=address(array),這樣就可以完成加法運算

long add_address(int a,int b)

兩個數字相加

兩個數字相加 題幹 給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3...

不用if比較兩個數大小

一 問題 有兩個變數a,b,不用 if switch或者其它判斷語句,找出兩個數中間比較大的 二 解決方案 方法1 取平均值法 大的為 a b abs a b 2 小的為 a b abs a b 2 int fmax1 int a,int b 方法2 不使用abs ab時,b a 0,所以前面為a ...

不用if比較兩個數大小

大的為 a b abs a b 2 小的為 a b abs a b 2 int fmax1 int a,int b ab時,b a 0,所以前面為a a b 後面為a b,那麼結果就是a int fmax2 int a,int b 如果取 a b 餘數不為0,則說明a b 這是個好方法,不過題目說了...