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」が割り当てられる理由を誰かが説明してくれることを期待していました。