You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何不使用Number(n).toString(2)获取指定位的整数值?

如何不使用toString()获取数字的指定位值

当然可以!完全不需要借助Number(n).toString(2)这类字符串转换方法,用位运算就能高效地获取某个特定位置的位值,思路和你已经用到的设置、清除位的逻辑一脉相承。

实现思路

核心是利用左移和按位与操作:

  1. 先把数字1左移到目标位的位置,得到一个只有该位为1、其余位为0的掩码;
  2. 将原数字和这个掩码做按位与运算:如果结果不为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,返回1
  • getBit(5, 1):第1位是0,返回0
  • getBit(5, 2):第2位是1,返回1

这种位运算的方式比字符串转换高效很多,因为它直接在二进制层面操作,没有额外的字符串处理开销。

内容的提问来源于stack exchange,提问作者nemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:43:53