剑指offer--二进制中1的个数

来源:互联网 发布:js input不可编辑属性 编辑:程序博客网 时间:2024/06/06 09:36

题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

public class Solution {    public int NumberOf1(int n) {          int count = 0;        while (n != 0) {            ++count;            n = (n - 1) & n;        }        return count;    }}

这里如果n!=0那么他的二进制数据至少有一个1,所以count++。每一次将n-1和n进行与再将得到的值赋给n。这样会去掉n二进制中最低位的1.一直循环到n中没有1为止。

原创粉丝点击