function bitTotal(num) {
modes = 0;
for (i = 0; i < 4; i++) {
if (num & 1)
modes++;
num >>>= 1;
}
return modes;
}

解决方案 »

  1.   

    &是位运算符“与”。即当Javascript进行位运算是,它首先将操作数以二进制位进行运算,然后以十进制的数值返回。
    而运算符&(与)是只有在对应位同时为1的时候为1,否则为0.
      

  2.   


     num >>>= 1;
    num = num>>>1
      

  3.   

    & 与运算  二进制 1&1=true 1&0=false 0 & 0&0=false‘>>>=’ 原数=原数向右移N位, 即 (原数)\(2的N次方)
      

  4.   

    function bitTotal(num) {
    modes = 0;
    for (i = 0; i < 4; i++) {
    if (num & 1)
    modes++;
    num >>>= 1;
    }
    return modes;
    }
    假设传入数字55&1做的是与运算 得到的结果是1 强转为BOOLEAN为true  因此modes+1
    5>>>1的话 得到的结果是10 右移运算使101 => 10