二进制获取指定位的值

-

每个十进制都可以转换为二进制:

3:  0011
8:   1000
15:  1111

如果让二进制的每一位代表一个有具体含义的状态,那么这种存储状态的方式就会大大节省资源。

提供一个十进制的数字怎么获得它的二进制形式指定位置的数字呢?

比如获取15对应二进制的索引为1的状态

1、将15右移1位

0111

2、右移后与1做与运算

01110001
得到
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

 

 

 

 

 

-

posted @ 2022-08-14 21:33  古墩古墩  Views(479)  Comments(0Edit  收藏  举报