等于否定以确定最低有效位



基本上,我想检查最后一位有效位是否为0。我已经有了一个条件来测试位是否设置(或者至少,我相信是这样):

cells[x + y * cols] & 1 === 1

在某些时候,我需要这个的否定,所以我想:

cells[x + y * cols] & 1 === 0

但是我没有得到预期的结果。所以我输入:

(!cells[x + y * cols] & 1 === 1)

根据预期结果,这似乎更合适。实际上,两种情况下我都没有得到预期的结果。也许问题来自其他地方,或者我只是误解了按位操作符的使用。

那么首先,为什么这些行是不同的:

console.log(!(4 & 1 === 1)); // true
console.log(4 & 1 === 0); // 0

我的意思是,显然LSB(4)是0。我想说第一个是我需要的…

您需要像这样将4 & 1包装到括号中

console.log((4 & 1) === 0);

因为如果你不这样做,它会优先考虑1 === 0,即false,然后是4 & false,即4 & 0

相关内容

  • 没有找到相关文章

最新更新