二进制 提取一个数有多少位1

88 阅读1分钟

题目

给定一个数,获取该数二进制有多少位1

  • 先提前最右侧1,提取到后计数,然后将原数最右侧的1抹掉,然后继续提取最右侧的1
function bitOne(num){
    let count=0;
    
    while(num!==0){
        const rightOne=num&(~num+1)
        count++;
        
        // 00011010
        // 00000010
        
        // 00011000
        num^=rightOne
    }
    
    return count;
}