演算法 位運算實現加法

2021-10-08 21:21:28 字數 466 閱讀 4284

最近又被面到,在鞏固一下。

結合之前的:

[演算法]mask = k & (-k) ,二進位制轉10進製,還有位運算

等同於:

寫乙個函式,求兩個整數之和,要求在函式體內不得使用 「+」、「-」、「*」、「/」 四則運算符號。

因為異或運算,相當於無進製和,只有兩個數字不一樣才為1

進製呢?

進製相當於 與運算 + 左移一位。

因為與運算同時為1的時候才為1,那麼向左移動一位,那麼就可以達到進製的效果了、

所以結果應該是: 異或運算結果n

c :  a&b<<1

那麼:迴圈的球n和c 直到進製為0;此時s = n

因為其實最終也是做加法,那麼就反覆的做異或和進製就好了~

public int add(int a, int b) 

return a;

}

位運算 實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下 1 1 01 0 1 0 1 10 0 0很明顯這幾個表示式可以用位運算的 來代替,如下 1 1 01 0 1 0 1 10 0 0這樣我們就完成了簡單的一位數...

位運算 實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下1 1 01 0 1 0 1 10 0 0 很明顯這幾個表示式可以用位運算的 來代替,如下1 1 01 0 1 0 1 10 0 0這樣我們就完成了簡單的一位數加...

位運算實現加法

用位運算實現加法也就是計算機用二進位制進行運算,32位的cpu只能表示32位內的數,這裡先用1位數的加法來進行,在不考慮進製的基礎上,如下 1.1 1 0 2.1 0 1 3.0 1 1 4.0 0 0 很明顯這幾個表示式可以用位運算的 來代替,如下 1.1 1 0 2.1 0 1 3.0 1 1 ...