JavaScript如何不使用Number(n).toString(2)获取指定位的整数值?
如何不使用
toString()获取数字的指定位值 当然可以!完全不需要借助Number(n).toString(2)这类字符串转换方法,用位运算就能高效地获取某个特定位置的位值,思路和你已经用到的设置、清除位的逻辑一脉相承。
实现思路
核心是利用左移和按位与操作:
- 先把数字
1左移到目标位的位置,得到一个只有该位为1、其余位为0的掩码; - 将原数字和这个掩码做按位与运算:如果结果不为
0,说明原数字的目标位是1;如果结果为0,则目标位是0。
代码示例
const getBit = (num, position) => { // 生成对应位置的掩码:1左移position位 const mask = 1 << position; // 按位与后判断结果,返回1或0 return (num & mask) !== 0 ? 1 : 0; };
简化写法
如果你喜欢更简洁的代码,也可以用双重取反来转换布尔值为数字:
const getBit = (num, position) => +!!(num & (1 << position));
实际测试
举几个例子验证一下:
getBit(5, 0):5的二进制是101,第0位是1,返回1getBit(5, 1):第1位是0,返回0getBit(5, 2):第2位是1,返回1
这种位运算的方式比字符串转换高效很多,因为它直接在二进制层面操作,没有额外的字符串处理开销。
内容的提问来源于stack exchange,提问作者nemo
相关产品推荐
相关产品推荐

