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


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;

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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM