gpt4 book ai didi

javascript - 按位运算符的求值

转载 作者:行者123 更新时间:2023-12-03 11:59:07 25 4
gpt4 key购买 nike

我真的不明白为什么下面代码中的 9、14、19、24 的 a * 51 & 52 的计算结果为 false。我知道间隔是 5,但为什么使用 51 和 52,以及我会使用什么数字,例如间隔为 6?

for(               // loop :)
b=a=''; // b - result , a - numeric variable
a++<36; //
b+=a*51&52 // if "a" is not 9 or 14 or 19 or 24
? // return a random number or 4
(
a^15 // if "a" is not 15
? // genetate a random number from 0 to 15
8^Math.random()*
(a^20?16:4) // unless "a" is 20, in which case a random number from 8 to 11
:
4 // otherwise 4
).toString(16)
:
'-' // in other cases (if "a" is 9,14,19,24) insert "-"
);
return b

2014年8月25日15:35更新:抱歉,也许我的问题有点不清楚。我想要一个逻辑或数学解释,为什么按位比较仅对 9、14、19、24 求值为 false。我知道按位运算符的作用及其工作原理,但我真的不明白所使用的逻辑上面的图案。该代码实际上取自要点,用于生成随机 v4 UUID(请参阅 https://gist.github.com/LeverOne/1308368 ),我将其命名为大小优化代码,而不是混淆代码。

最佳答案

实际上,a*51&52 的计算结果为 0,即 9 的 false(而不是 true), 14、19、24。

如果您在程序员模式下打开 Windows 计算器并输入 9*51 和 52,您将自己看到它。

这肯定还有数学原因,您可以尝试调查更多...

关于javascript - 按位运算符的求值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25481755/

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