给定一个整数,求它的二进制表示中有多少个1。
利用位运算,使用n与n-1的按位与,其结果恰好去掉了n最低位的1,所以可以得到一个时间只与1的数量有关的算法。
- int countOne(int n)
- {
- int count=0;
- while(n!=0)
- {
- n&=n-1;
- count++;
- }
- return count;
- }
转载于:https://blog.51cto.com/wenryxu/1173778
给定一个整数,求它的二进制表示中有多少个1。
利用位运算,使用n与n-1的按位与,其结果恰好去掉了n最低位的1,所以可以得到一个时间只与1的数量有关的算法。
转载于:https://blog.51cto.com/wenryxu/1173778