基本情報処理では「nという数字は二進数で何桁必要か?」などという問いが出てくることがある。

例えば1,000くらいなら、次のように数え上げることも可能だ。
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
と数えて、二進数で10桁、と分かる。あれ、1から数えないの?ごもっとも。ここで数えたのは「表現できるパターンの数」である。
1桁    2パターン 0 と 1 十進法だと 0~1
2桁    4パターン 00,01,10,11 十進法だと 0~3
という具合である。


しかし、これで「世界の人口が100億人まで増えたときを想定し、その値を確保するのに必要なビット数は」などとなると泣けてくる。
こういうときに対数関数を使う。ビット数、つまり、二進数で何桁になるか、を問われているので、対数関数の底は 2 である。
log210000000000 = log21010 = 10 × log210
※なぜこれがイコールで結ばれるかはこちら

ここで行き詰ってしまう・・のではなく、たいていは「log210 = 何某として計算しなはれ」と書かれている。確か3.106くらいだったかな。というのも、2を何乗すれば10になるか、ってのがlog210 という式の意味だ。 ってことは
log28 < log210 < log216  

3 < log210 < 4
ってことなので、とにかく、3~4の間である。ここでは3.106として、考えるとして、

10 × log210 = 10 × 3.106 = 31.06
※なぜこれがイコールで結ばれるかはこちら
で、10の1乗は10、で2桁取る。つまり、乗数に+1を加えた数が桁数なので 32.06 の端数を切り捨てて、32
※もし、途中の3.106の3.1の部分が間違っていたら、この答えも間違えていることになる・・・。

logの解の小数部を切り捨て、+1 すれば桁数。

こういう問題、とき方をちょっと知っているだけで確実な得点源になる。もう少し噛み砕け、という場合は、コメントなりいただけるとありがたい。ただし、こちらを理解している前提でのご質問をお願いしたい。もし、参照先で書いてあることが分からないのなら、そちらのページのコメントをお願いしたい。