IT業界の国家資格である基本情報技術者試験や応用情報技術者試験では、基数変換やサブネットマスク計算、通信速度の換算問題が毎年のように出題されます。試験本番で筆算の手間を省き、タイムロスを防ぐには、主要な数値を反射的に引き出せる暗記が求められます。
現場で使われる「2の累乗」暗記のリズムと語呂合わせ
エンジニアの間で古くから定着しているのが、数値をテンポよく唱えて体で覚えるリズム暗記です。
「いち、に、よん、ぱち、いちろく、さんに、ろくよん、いちにっぱ、にーごーろく、ごーいちに、いちまるにーよん」
このリズムで $2^0$(1)から $2^{10}$(1024)までを1セットとして口ずさむ訓練が最も効果的です。さらに大きな値については、以下のキリの良い節目をフックとして覚えるのが定石です。
- 2の12乗(4096):「よん・まる・きゅう・ろく」(メモリのページサイズ4KB)
- 2の16乗(65536):「むごいさむ(65136)ではなく、ろくごーごーさんろく」
- 2の24乗(1677万216):「フルカラー(24bit)は約1677万色」
- 2の32乗(約43億):「IPv4の限界値は約43億個」
プログラミングでの実務活用|2のべき乗判定アルゴリズム
ソフトウェア開発において、与えられた数値 $n$ が「2の累乗(べき乗)」であるかどうかを判定する処理は、バッファサイズの正規化やデータ構造の最適化で頻出します。
通常のループ処理や対数(log)計算を使うと処理コストがかかりますが、ビット演算を活用するとわずか1行・計算量 $O(1)$ で判定が可能です。
// 2のべき乗判定アルゴリズム(C言語 / Java / JavaScript共通) bool isPowerOfTwo = (n > 0) && ((n & (n - 1)) == 0);
たとえば $n = 8$(2進数で 1000)のとき、$n - 1 = 7$(2進数で 0111)となります。この2つの論理積(AND演算)を取ると、1000 & 0111 = 0000 となり、結果が必ず 0 になります。2の累乗数は最上位ビットのみが「1」で他がすべて「0」であるため、1を引いた値とのビット積は必ずゼロになるという幾何学的性質を利用した、極めて洗練された高速化手法です。