我正在尝试使用位运算符&来判断数组内的数字是偶数还是奇数。
这是我的代码:
arr = [1, 2, 4, 6, 9, 11, 18, 361, 5622, 5623]
arr.forEach(function (el) {
if (parseInt(el.toString(2)) & 1 === 0) {
console.log(`${el} in binary is ${el.toString(2)} and it is an EVEN number`);
} else {
console.log(`${el} in binary is ${el.toString(2)} and it is an ODD number`);
}
});
逐个元素地考虑,每个元素都会返回0或1,用于判断一个数字是偶数还是奇数,但在这种情况下,它们都返回奇数。 以下是结果:
- 二进制中的1是1,是奇数。 - 二进制中的2是10,是奇数。 - 二进制中的4是100,是奇数。 - 以此类推...
我错在哪里了?
el & 1
称为比较,但你是对的,当el & 1
计算结果为0
时,它将被视为假。我认为在条件语句中使用===
检查是否等于0
更直接和清晰,因为它检查的是按位&
是否计算为0
。 - Nick Parsons