gpt4 book ai didi

javascript - 奇数测试

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:54 26 4
gpt4 key购买 nike

最常见的模运算符 % 用于测试偶数或奇数。

现在我的问题是,使用按位 AND 测试奇数是否有任何问题,因为测试最右边的位是 1 还是 0 感觉更自然> 比对 2

进行模数检查

并且由于 32 位转换不会更改最右边的位。

两者

(1 + Math.pow(2,52)) & 1//1

(1 + Math.pow(2,52)) % 2//1

产生相同的结果。

是否有理由更喜欢模运算符而不是按位运算符?

编辑:此问题仅考虑落在 64 位精度范围内的值因为在 2^53 以上只能表示偶数,因此两个操作数都失败 (9007199254740993 % 2//0)

最佳答案

在 JavaScript 中,使用任何按位运算符都会导致数字首先被 chop 为 32 位整数。这意味着它不适用于某些更大的值。 (好吧,相当多的更大的值:-)

% 运算符不会那样做。

编辑 — 嘿,所有给我投票的好人:别急 :-) C5H8NNaO4指出整数 chop 过程应该保留低位,如果您只考虑去掉尾数的顶部,这在直觉上是有意义的,实际上一些粗略的“测试”表明它似乎工作正常。

当然,对于真正大的值,事情会变得更加复杂,当以不精确的 float 表示时,这些值可能是奇数或偶数,因为缺少最低有效数字。换句话说,当浮点值中的二进制指数产生的有效值大于尾数容量(我认为是 53 位)时,那么您要么必须考虑所有这些数字(因为低位始终为零)否则你必须考虑不确定的问题。

很明显我不是数学家。

关于javascript - 奇数测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15972835/

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