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

1.spa

1的個數.net

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

 

一樣一個問題,位運算能夠提升程序的運行效率。code

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

 

常規方法class

public static boolean isOdd(int i){效率

        return i % 2 != 0;二進制

}程序

 

位運算方法方法

public static boolean isOdd(int i){static

        return (i & 1) != 0;

public boolean isOdd(int a){   
    if((a&1) != 1){   //是奇數   
        return true;   
    }   
    return false;   
}  

說明:

咱們知道計算機中的數字一般用二進制補碼錶示。

若是爲正數,補碼與原碼相同,直接看最後一位(由於數字1的前面N位均爲0,跟它作與運算,前面確定爲0),奇數爲1,偶數爲0,與1相與,結果不變。

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

相關文章
相關標籤/搜索