大多数情况下,模运算符%
用于测试偶数或奇数。
现在我的问题是,使用按位与对奇数进行测试是否有任何问题,因为它感觉更自然地测试最右边的位是否1
比0
进行模检查2
并且作为 32 位转换不改变最右边的位。
两个都
(1 + Math.pow(2,52)) & 1 //1
和
(1 + Math.pow(2,52)) % 2 //1
产生相同的结果。
是否有理由更喜欢模运算符而不是按位?
编辑:这个问题只考虑在 64 位精度范围内的值,因为只有偶数可以精确表示在 2^53 以上,因此两个操作数都失败(9007199254740993 % 2 //0)