位運算(1的個數;2.判斷奇偶)
阿新 • • 發佈:2018-10-18
奇數 判斷 其它 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.判斷奇偶)