Возвести число в степень. Битовые операции - C (СИ)
Формулировка задачи:
Каким образом можно возвести число в некую степень при помощи битовых операций ?
Имеется ввиду быстрое возведение в степень.
Решение задачи: «Возвести число в степень. Битовые операции»
textual
Листинг программы
- int binpow (int a, int n)
- {
- int res = 1;
- while (n)
- {
- if (n & 1) res *= a;
- a *= a;
- n >>= 1;
- }
- return res;
- }
- void main(int argc,char* argv[])
- {
- int i;
- for(i=0; i<=8; i++) printf("%d\n",binpow(2,i));
- system("pause");
- }
Объяснение кода листинга программы
- В функции
binpow
происходит возведение числаa
в степеньn
. - Инициализируется переменная
res
со значением 1. - Запускается цикл
while
, который выполняется до тех пор, покаn
не станет равным 0. - Внутри цикла проверяется, является ли самый младший бит числа
n
единицей. - Если это так, то значение переменной
res
умножается наa
. - Значение переменной
a
умножается на само себя. - Самый младший бит числа
n
сдвигается вправо на 1 позицию (начиная с 0). - Цикл продолжается до тех пор, пока
n
не станет равным 0. - По завершении цикла возвращается значение переменной
res
. - В функции
main
инициализируется переменнаяi
со значением 0. - Запускается цикл
for
, который выполняется 9 раз. - Внутри цикла выводится на экран значение функции
binpow
с аргументами 2 иi
. - Переменная
i
увеличивается на 1. - Цикл продолжается до тех пор, пока
i
не станет равным 9. - В конце программы вызывается функция
system
, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д