提问者:小点点

JavaScript-读取位值,单个位是开(1)还是关(0)?


在JavaScript中,我如何知道单个位是开(1)还是关(0)?

function isBitOn(number, index)
{
  // ... ?
}

// Example:
let num = 13; // 1101

isBitOn(num, 0); // true
isBitOn(num, 1); // false
isBitOn(num, 2); // true
isBitOn(num, 3); // true

我知道在JavaScript中我们有按位操作。 但是我怎样才能使用它们,或者使用任何其他方法,读取单个位呢?


共2个答案

匿名用户

将数字转换为二进制,然后检查位:

null

function isBitOn(number, index) {
  var str = number.toString(2);
  return str[str.length - index - 1] == 1 ? true : false;
}

let num = 13;

console.log(isBitOn(num, 0));
console.log(isBitOn(num, 1));
console.log(isBitOn(num, 2));
console.log(isBitOn(num, 3));

匿名用户

JavaScript保留了C二进制运算符的传统。 您使用“索引”将值1向左移动,然后您和结果转换为您感兴趣的数字:

null

function isBitOn(number, index) {
  return Boolean(number & (1 << index));
}
console.log(isBitOn(13, 0));
console.log(isBitOn(13, 1));
console.log(isBitOn(13, 2));
console.log(isBitOn(13, 3));
console.log(isBitOn(13, 4));
console.log(isBitOn(13, 5));
console.log(isBitOn(13, 6));