js/jquery bit位计算

写一个函数实现传值(如:way=2) 选出是popo [2的1次方=2]输出为[1]; 
如果way=5 选出的是邮件和短信【2的0次方+2的2次方=5】
输出的值为[0,2]

# -------------------------
# bit位|  0  |   1  |  2  |
# 意义 |邮件 | popo | 短信|
# -------------------------
阅读 3.1k
1 个回答
function getBitsPosition(n) {
    var r = [];
    var i = 0;
    while (n > 0) {
        if (n & 0x01 === 1) {
            r.push(i);
        }
        i++;
        n = n >> 1;
    }
    return r;
}

for (var i = 0; i < 10; i++) {
    console.log(`${i}: ${getBitsPosition(i)}`);
}

输出

0:
1: 0
2: 1
3: 0,1
4: 2
5: 0,2
6: 1,2
7: 0,1,2
8: 3
9: 0,3
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题