佐々野寄の日記

数学、ソフトウェアまたはそのほか

2の冪について

実はソフトウェアの世界で数学が役に立つことはほとんどありません。

 

数学が得意なことによって、抽象的言い回しに慣れているので

プログラムを書いたり読んだりが

あまり抵抗ないとかはあるでしょう。公理がプログラミングの規則に

変わっただけだ、と思う人もいます。でも、それは、「数学」が

役に立っているわけではないです。

上記の主張は、論理を基調とする学問ならすべて当てはまります。

物理学とか法律学とか哲学に置き換えても、通じる主張がほとんどです。

 

さて、数学が役になったこと、ダイレクトに数学を使ったと思ったことが

一度だけありました。私は当たり前だと思っていたことが、十年以上

ソフトウェアのプログラムをしていた同僚が驚いてくれました。

 

ソフトウェアの世界では2進法

 

さて、ソフトウェアの世界で、$2^{10}=1024$を1Kと呼称します。

$2$進法の海の中で生きるソフトウェアの世界では

$10$進法は使わないです。

 

たとえば、

「ある値の最大値を$500$にしようと思う」

とデザインレビューで発言したとします。

かなりの高確率で

「そんな中途半端な数字はやめて$512$にしろ」

と言われます。

$500$よりも$512=2^9$の方が切りのいい数字だということを

覚えておくことはソフトウェアの世界を生き抜くために必須のことです。

 

2の冪をすぐに変換できるか

さて、$2^{23}$と言われてそれがすぐに$8M$であることは

分かりますか?

$2^{34}$が$16G$とすぐに変換できますか?

 

件の同僚と話しているとき、何ら躊躇なくこの変換をやったところ

「暗算速いね」

とか言われました。

「いや暗算とかしてないよ?」

 

まずは基本

まず、$2^0$から$2^9$の値は覚えるでしょう。

ソフトウェアの世界でこの値を覚えていない人はいません。

覚えていなくても覚えたふりをしておきましょう。馬鹿にされます。

$2^9$までだったら頭の中で計算できますから、覚えているフリは楽です。

$256K=262144$とかまで覚えているひとがいる世界ですから。

 

$2^0=1$

$2^1=2$

$2^2=4$

$2^3=8$

$2^4=16$

$2^5=32$

$2^6=64$

$2^7=128$

$2^8=256$

$2^9=512$

 

KとかMとか

$2^{10}=1024$を1Kといいます。

K(キロ)、M(メガ)、G(ギガ)、T(テラ)

あたりまで覚えておけばいいでしょう。

 

$2^{10}$とK, M, G, Tの関係を理解しましょう。

10乗ごとに上がっていくことを心に刻むのです。

 

$2^{10}$がK、

$2^{20}=2^{10} * 2^{10}$は、最初の$2^{10}$をKと読んで、

2個あるからMになる。

$2^{30}=2^{10} * 2^{10} * 2^{10}$

とK, M, Gと読んで、3個あるからGになります。

 

2の冪の変換

これで、準備が整いました。

$2^{23}$と言われたら、

$2^{23}=2^{10} * 2^{10} * 2^{3}$

と変換します。

K, Mと数えて、$2^3=8$だから8Mとすぐに分かります。

 

$2^{32}=4G$とか、瞬間的に変換できるようになりましたね?