本文共 321 字,大约阅读时间需要 1 分钟。
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:整数的二进制减1,会把最右边的从 1 开始所有数取反,比如1100 减一为1011
然后把这两个数做与运算 1100 & 1011 =1000 会发现少了一个1,于是可以做一个计数来计算1的个数
public class Solution { public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1); } return count; }}
转载地址:http://homvb.baihongyu.com/