1、题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
2、代码实现
1 /** 2 算法思想解析: 3 把一个数减去一,再和原来的数做与运算,就会把原来整数最右边的1变成0,那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的循环 4 注意:循环结束之后的原数组就变成了0,因为每经过一次这样的循环,就会把原整数中最右边的数字1变为0,循环结束原数字的二进制表示中就全部变为0 5 */ 6 public class Solution { 7 public int NumberOf1(int n) { 8 int count=0; 9 while(n!=0){ 10 count++; 11 n=(n-1)&n; 12 } 13 return count; 14 } 15 }