Это бинарное возведение в степень, нашла функцию, но не могу понять операции "--n", "n >>= 1". С последнем, это вроде как сдвиг вправо, но почему используется знак равно? Скорее всего вопрос глупый, но я не очень понимаю. И как работает (n&1). Если это битовые операции, но мы же не переводим десятичное число в двоичную систему. Как это получается? :о
int binpow (int a, int n)
{
int res = 1;
while (n)
if (n & 1)
{
res *= a;
--n;
}
else
{
a *= a;
n >>= 1;
}