【C言語】2のn乗を計算する方法を3つ紹介【ビットシフト / pow関数 / for文】

C言語で2のn乗を求める方法について解説します。2のn乗を求めるプログラムは、プログラミング初心者でも比較的簡単なものですが、基本的な演算子や制御構造を理解していることが前提となります。

本記事では、そのような前提知識を持った方々向けに、2のn乗を求める方法について詳しく解説していきます。

目次

2のn乗を求める方法とは?

プログラミングにおいて、2のn乗を求めることはよくあります。この記事では、C言語で2のn乗を求める3つの方法について解説します。

1. 左シフト演算子を使った方法

左シフト演算子(<<)は、指定されたビット数だけ左にビットを移動する演算子です。これを利用して、2のn乗を計算することができます。以下はその例です。

int result = 1 << n;

このコードでは、「1」が「n」回分だけ左にシフトされています。

「<<」演算子は非常に高速な処理であるため、大量の計算でも効率的に処理することが可能です。ただし、「n」が32以上の場合や負数である場合など特殊なケースでは正しく動作しない可能性もあります。

2. pow関数を使った方法

C言語標準ライブラリー内に含まれるpow関数も、簡単かつ正確な方法で2の累乗値を計算することが出来ます。 以下はその例です。

#include <math.h>

double result = pow(2, n);

このコードでは、「pow()」関数内部で指定した引数「2」と「n」という変数から2のn乗を計算しています。

この方法は小数の指数を使えるため、2の0.5乗を求めることも可能です。

3. for文を使った方法

指数が整数ならfor文を使った方法も使えます。

int result = 1;
for (int i = 0; i < n; i++) {
    result *= 2;
}

初期値を1(2の0乗)にして、n回2を掛けることで2のn場を計算することが可能です。

以上3つの手法すべて有効かつ実用的な方法ですが、最も高速でシンプルなのはビットシフトを使った方法です。

指数が整数限定ではありますが、2の5乗など単純なる異常であればビットシフトを活用するといいでしょう。

目次