Степень в C, C++ и С#: как возвести число в любую степень, побитовые операции

Возведение в числа в степень в C и C++

Для того чтобы возвести число в степень можно воспользоваться функцией pow()

Рассмотрим короткий пример

#include <cmath>
#include <iostream>
using namespace std;
int main()
{
    double a=5, // a - число которое мы возводим в степень
    double b=3; // b - степень в которую мы возводим число
    cout << pow(a,b); // применяем функцию pow и выводим результат в cout (на экран)
    cin.get(); // ждем нажатия на любую клавишу, чтобы выйти из программы
}

Функция pow является частью библиотеки cmath, и поэтому её заголовок обязательно должен быть подключен в секции #include, как это сделано в примере. Также cout и cin являются частью библиотеки iostream и она у нас тоже подключена.

Давайте рассмотрим еще несколько примеров:

Пример, в котором степень и число задается пользователем:

#include <iostream>
#include <cmath>

using namespace std;

int main(){
    setlocale(0, "");
    double a, b;
    cout << "Возведение числа в степень:)" << endl;
    cout << "Пример: 5^2" << endl;
    cout << "Введите число: " << endl;
    cin >> a;
    cout << "Введите степень: " << endl;
    cin >> b;
    cout << "Ваш ответ = " << pow(a,b) << endl;
    return 0;
}

Этот пример уже сложнее тем, что числа, которые мы будем возводить в степень вводит пользователь.

Возведение числа 2 в степень n при помощи сдвига на n бит

int pow2(int n) { 
  return 1<<n;
}

Пояснение: возведение "2" в степень "n" реализуется с помощью сдвига, в общем случае:

  • сдвиг влево (в сторону старших разрядов) реализует умножение на два,
  • сдвиг вправо (в сторону младших разрядов) реализует деление на два.

Число n должно быть целочисленным.

Пример, в котором не используется функция pow()

#include <iostream>

using namespace std;

int main(){
    int n, a;
    cin>>n>>a;
    int tmp = n;
    if (a == 0) {
        cout<<1; 
        return 0;
    }
    for(int i = 1; i < a; i++) {
        n*=tmp;
    }
    cout<<n;
}

В этом примере пользователь вводит числа n и a. Где n - число, которое возводится в степень, a - степень числа. В цикле for, мы умножаем число n на само себя a раз и в результате получаем степень.

Напишем свою функцию для возведение числа в степень:

double raiseToPow(double x, int power)
{
    double result;
    int i;
    result =1.0;
    for (i=1, i<=power;i++)
    {
        result = result*x;
    }
    return(result);
}

Возведение в степень на C#

Простой пример:

int x = 5;
int stepen = 4;
Console.WriteLine("5^4 = " + Math.Pow(x, stepen));

Полный текст программы

using System;
namespace My3
{
     class Program
     {
          static void Main(string[] args)
          {
               double x = 0.5;
               int stepen = 4;
               Console.WriteLine("0.5^4 = " + Math.Pow(x, stepen));
               Console.WriteLine("5^4 = " + Math.Pow(5, 4));
               Console.WriteLine("-5^4 = " + Math.Pow(-5, 4));
               Console.WriteLine("-5^(-4) = " + Math.Pow(-5, -4));
               Console.ReadKey();
          }
     }
}

Несколько полезных книг для обучения программированию на C++