1. 程式人生 > >位運算(1的個數;2.判斷奇偶)

位運算(1的個數;2.判斷奇偶)

奇數 判斷 其它 str 與運算 符號 奇偶性 進制 number

1.

1的個數

int NumberOf1(int n){
int count = 0;
   while(n)
 {
    ++count;
    n=(n-1)&n;
 }
}

同樣一個問題,位運算可以提高程序的運行效率。

下面講一下關於奇偶性的判斷。

常規方法

public static boolean isOdd(int i){

return i % 2 != 0;

}

位運算方法

public static boolean isOdd(int i){

return (i & 1) != 0;

}

說明:

我們知道計算機中的數字通常用二進制補碼表示。

如果為正數,補碼與原碼相同,直接看最後一位(因為數字1的前面N位均為0,跟它做與運算,前面肯定為0),奇數為1,偶數為0,與1相與,結果不變。

如果為負數,補碼轉原碼:保持符號位不動,其它各位取反+1,即為負數的絕對值原碼全部取反+1。還是看最後1位,先取反,再+1,結果還是和原來相同。進行與運算時還是原來的末位,所以用跟1做與運算還是保持原來的結果。
---------------------
作者:taizhoufox
來源:CSDN
原文:https://blog.csdn.net/taizhoufox/article/details/4583243
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

位運算(1的個數;2.判斷奇偶)