本文共 680 字,大约阅读时间需要 2 分钟。
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
想法1:输入一个int型整数,强转成unsigned int,将这个数%2,判断是否是1,计数,循环.class Solution { public: int NumberOf1(int n) { int num = 0; int a = 0; unsigned int b; b = n; while(b > 0){ a = b % 2; b = b / 2; if(a){ num ++; } } return num; }};
想法2: 将这个数 -1 与齐本身按位取反.不等于一继续循环,计数.
public class Solution { public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1); } return count; } }
转载地址:http://bkrgn.baihongyu.com/