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