题解 | #二进制中1的个数#
二进制中1的个数
https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8
class Solution { public: int NumberOf1(int n) { int cnt = 0; if(n==0)return 0; if(n<0){ n = 2147483647 + n + 1; // 转成对应正数 cnt += 1; // 符号位+1 } while(n != 0){ cnt += (n&1); n = n >> 1; } return cnt; } };
负数补码对应取反加一,同时符号位补上一个cnt
#剑指offer#