确定最低有效位的相等否定
Equality negation to determine Least Significant Bit
基本上,我想检查最后一个有效位是否为 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
我的意思是,显然 4 的 LSB 是 0。
我会说第一个是我需要的...
您需要像这样将 4 & 1
括在括号中
console.log((4 & 1) === 0);
因为如果你不这样做,它会优先考虑 1 === 0
,即 false
,然后是 4 & false
,这与 4 & 0
相同。
基本上,我想检查最后一个有效位是否为 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
我的意思是,显然 4 的 LSB 是 0。 我会说第一个是我需要的...
您需要像这样将 4 & 1
括在括号中
console.log((4 & 1) === 0);
因为如果你不这样做,它会优先考虑 1 === 0
,即 false
,然后是 4 & false
,这与 4 & 0
相同。