我正在看一个在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++语法有很多很好的参考。你应该打开一个。这不是一个真正的编程问题。 –
具体来说,查找位操作。 “&”(按位和)和“>>”(右移和扩展“>> =')都属于该类别。 –