0

这是一个简单的问题,但我被卡住了。这是本文中的准随机数生成器的代码。

void PlaneHammersley(float *result, int n)
{
float p, u, v;
int k, kk, pos;

for (k=0, pos=0 ; k<n ; k++) {

u = 0;
for (p=0.5, kk=k ; kk ; p*=0.5, kk>>=1)
   if (kk & 1) // kk mod 2 == 1
     u += p;
v = (k + 0.5) / n;
result[pos++] = u;
result[pos++] = v;
}
}

我尝试用 Python 翻译,而第二个 for 循环对我来说很神秘。结束条件是kk一个 int,我不知道它何时评估为 True。有人可以解释发生了什么吗?

谢谢。

4

2 回答 2

2

相当于:

for (p=0.5, kk=k ; kk != 0; p*=0.5, kk>>=1)
于 2012-08-11T12:36:48.487 回答
0

如果整数不为零(即严格为正或负),则其计算结果为真。这也代表各种其他类型:浮点值在非零时也为真,不等于指针的NULL指针也被认为是真。

于 2012-08-11T12:35:06.317 回答