剑指Offer——二进制中1的个数

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 }
原文地址:https://www.cnblogs.com/BaoZiY/p/11168706.html