最近又被面到,在鞏固一下。
結合之前的:
[演算法]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 ...