int x, y; // x is a non-negative integer
p = 0;
while (x > 0)
{
if ( x % 2 == 1 )
p = p + y;
y = y*2;
x = x/2;
}
// p == a*b here
我知道这个循环使用代数找到'a'和'b'的乘积:
a * b = (1/2)a * 2b
但我不明白代码:
if ( x % 2 == 1 )
p = p + y;
我希望有人能解释为什么在 x 的奇数值上将“p”分配为“p + y”。