模棱两可的伪代码短语

Ambiguous pseudocode phrase

我正在寻找一些代码的伪代码,我遇到了短语

lowest 32 bits of

在网站上搜索了很长时间后,我找到了答案:

我们要做的是对64位数和0xffffffff进行AND运算得到最低的32位

我的代码

MT[i] = ((1812433253*(MT[i-1]^(((MT[i-1]))>>30)))+i) && 0xffffffff;

如果答案正确,你能快速解释一下为什么这个答案是正确的吗?如果这个答案不正确,你能给我正确答案吗?

此代码会给我 ((1812433253*(MT[i-1]^(((MT[i-1]))>>30)))+i) 的最低 32 位吗?

Answer Website

您正在使用 logical AND:

MT[i] = ((1812433253*(MT[i-1]^(((MT[i-1]))>>30)))+i) && 0xffffffff;

您想使用 bitwise AND:

MT[i] = ((1812433253*(MT[i-1]^(((MT[i-1]))>>30)))+i) & 0xffffffff;

第一个表达式将为您提供 true(如果第一个值非零)或 false。第二个表达式将为您提供该值的最低 32 位。