Возвести число в степень. Битовые операции - 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
, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет любую клавишу. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д