JavaScript - 读取位值,单个位是开 (1) 还是关 (0)?
JavaScript - Read Bit Value, is single Bit On (1) or Off (0)?
在 JavaScript 中,我如何知道单个位是打开 (1) 还是关闭 (0)?
function isBitOn(number, index)
{
// ... ?
}
// Example:
let num = 13; // 1101
isBitOn(num, 0); // true 1
isBitOn(num, 1); // false 0
isBitOn(num, 2); // true 1
isBitOn(num, 3); // true 1
我知道在 JavaScript 中我们有 Bitwise Operations。但是我如何使用它们或使用任何其他方法读取单个位?
JavaScript 保留了 C 二元运算符的传统。您使用 "index" 将值 1 向左移动,然后将结果与您感兴趣的数字相加:
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));
请注意,这是按位 &
运算符,而不是 &&
短路逻辑运算符。
另请注意,这些运算符将数字视为 32 位整数,因此它不适用于非常大的数字。
将数字转换为二进制,然后检查位:
function isBitOn(number, index) {
let binary = number.toString(2);
return (binary[(binary.length - 1) - index] == "1"); // index backwards
}
let num = 13; // 1101
console.log(isBitOn(num, 0));
console.log(isBitOn(num, 1));
console.log(isBitOn(num, 2));
console.log(isBitOn(num, 3));
在 JavaScript 中,我如何知道单个位是打开 (1) 还是关闭 (0)?
function isBitOn(number, index)
{
// ... ?
}
// Example:
let num = 13; // 1101
isBitOn(num, 0); // true 1
isBitOn(num, 1); // false 0
isBitOn(num, 2); // true 1
isBitOn(num, 3); // true 1
我知道在 JavaScript 中我们有 Bitwise Operations。但是我如何使用它们或使用任何其他方法读取单个位?
JavaScript 保留了 C 二元运算符的传统。您使用 "index" 将值 1 向左移动,然后将结果与您感兴趣的数字相加:
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));
请注意,这是按位 &
运算符,而不是 &&
短路逻辑运算符。
另请注意,这些运算符将数字视为 32 位整数,因此它不适用于非常大的数字。
将数字转换为二进制,然后检查位:
function isBitOn(number, index) {
let binary = number.toString(2);
return (binary[(binary.length - 1) - index] == "1"); // index backwards
}
let num = 13; // 1101
console.log(isBitOn(num, 0));
console.log(isBitOn(num, 1));
console.log(isBitOn(num, 2));
console.log(isBitOn(num, 3));