二进制获取指定位的值
-
每个十进制都可以转换为二进制:
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
-