位运算
[TOC]
1.二进制中1的个数
1.1题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
1.2解法
&:两位都是1则为1,否则为0;
n-1: 1110100-1=1110011;
n&n-1:1110100&1110011=1110000(少了一个1);
一个整数的二进制有多少个1,就可以进行多少次这样的操作。
function NumberOf1(n)
{
let count=0;
while(n){
n=n&(n-1);
count++;
}
return count;
}
1
2
3
4
5
6
7
8
9