写一个函数实现传值(如:way=2) 选出是popo [2的1次方=2]输出为[1];
如果way=5 选出的是邮件和短信【2的0次方+2的2次方=5】
输出的值为[0,2]
# -------------------------
# bit位| 0 | 1 | 2 |
# 意义 |邮件 | popo | 短信|
# -------------------------
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