給定一個整數,求它的二進制表示中有多少個1。
利用位運算,使用n與n-1的按位與,其結果恰好去掉了n最低位的1,所以可以得到一個時間只與1的數量有關的算法。
- int countOne(int n)
- {
- int count=0;
- while(n!=0)
- {
- n&=n-1;
- count++;
- }
- return count;
- }
給定一個整數,求它的二進制表示中有多少個1。
利用位運算,使用n與n-1的按位與,其結果恰好去掉了n最低位的1,所以可以得到一個時間只與1的數量有關的算法。
- int countOne(int n)
- {
- int count=0;
- while(n!=0)
- {
- n&=n-1;
- count++;
- }
- return count;
- }