我正在看一個在C++中的嬰兒步驟巨大的步驟算法的例子,我不知道C++,但我可以理解大部分的程序,但是有兩行我只是不知道他們做什麼,不能理解一些C++
int powmod (int a, int b, int m) {
int res = 1;
while (b > 0)
if (b & 1) {
res = (res * a) % m;
--b;
}
else {
a = (a * a) % m;
b >>= 1;
}
return res % m;
}
可有人請解釋一下什麼是第一if
聲明(b & 1)
是檢查,並在else
聲明b >>= 1
爲什麼有兩種'>'
運營商,這是你多麼檢查更大的/在C等於++?謝謝
'如果(b&1)'檢查'b'是否爲奇數(將其低位位置1)。 'b >> = 1'將'b'右移一位,並將結果賦給'b';它大致相當於'b = b/2;'另見http://en.cppreference.com/w/cpp/language/operator_arithmetic –
「我不知道C++,但我可以理解大部分程序」。 C++語法有很多很好的參考。你應該打開一個。這不是一個真正的編程問題。 –
具體來說,查找位操作。 「&」(按位和)和「>>」(右移和擴展「>> =')都屬於該類別。 –