每个十进制都可以转换为二进制:
3: 0011
8: 1000
15: 1111
如果让二进制的每一位代表一个有具体含义的状态,那么这种存储状态的方式就会大大节省资源。
提供一个十进制的数字怎么获得它的二进制形式指定位置的数字呢?
比如获取15对应二进制的索引为1的状态
1、将15右移1位
0111
2、右移后与1做与运算
0111
与
0001
得到
0001
可以写个方法
function valueAtBit(num, bit) {
return num >> bit & 1;
}
使用:
10 的二进制是 1010
valueAtBit(10, 0); // 0
valueAtBit(10, 1); // 1
valueAtBit(10, 2); // 0
valueAtBit(10, 3); // 1