二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解题思路 对于n来说,n&(n-1)能够将n的二进制表示中最右面的1变为0,比如n的二进制表示为xxx100,n-1的二进制表示为xxx011,显然进行一个&操作之后,最右面的1已经变为0,那么有多少次操作n可以变为0,n中就含有多少个1。 实现代码 class Solution { public : int NumberOf1 ( int n ) { int cnt = 0 ; while ( n ) { cnt ++ ; n & = n - 1 ; } return cnt ; } } ; 来源: CSDN 作者: qq_41922018 链接: https://blog.csdn.net/qq_41922018/article/details/104444959