/*题目 *输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 * */ /*思路 * * (n-1) & n 操作会使 末尾变0 * 5 =》 101 4 =》 100 101 & 100 = 100; 如果有1继续再来 知道a=0; * * 概念: 1 & 1 = 1 1 & 0 = 0 * */
public int NumberOf1(int n){
int count = 0 ;
while( n != 0){
count ++;
n = (n-1) & n;
}
return count;
}
本文介绍了一种计算整数二进制表示中1的个数的高效算法。通过(n-1)&n操作,每次将最低位的1变为0,直至n为0,从而统计1的数量。适用于正负数,利用补码表示简化负数计算。
639

被折叠的 条评论
为什么被折叠?



