gpt4 book ai didi

javascript - 如何使用按位运算符 & 评估偶数和奇数

转载 作者:行者123 更新时间:2023-12-01 15:59:41 24 4
gpt4 key购买 nike

我正在尝试使用按位运算符 & 评估数组中的数字是偶数还是奇数。

这是我的代码:

    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,是奇数

等等……

我哪里做错了?

最佳答案

这里的操作顺序很重要(由 operator precedence 定义)。 &=== 之后发生比较,所以你的 if 语句实际上是这样计算的:

if (parseInt(el.toString(2)) & (1 === 0)) {

哪里1===0首先执行。这将导致 if(<num> & false) , 其中false转换为数值0因为它在按位 & 的上下文中使用运算符(operator)。所以,<num> & 0将始终评估为 0 ,这是一个 falsy value (因此总是导致 else block 触发)。

相反,您可以使用括号来强制执行顺序:

arr = [1, 2, 4, 6, 9, 11, 18, 361, 5622, 5623]
arr.forEach(function(el) {
if ((el & 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`);
}
});

您还可以使用 &直接在您的号码上操作(因此无需在其上使用 toString)

关于javascript - 如何使用按位运算符 & 评估偶数和奇数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60648296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com