とあるblogでlongの最大値の
話をしていたのでbit数と10進数の桁数の概算の仕方を少々。
数学的にまじめにやると2を底とする対数が―という話になるのだけど、割愛。
覚えておきたいのは2の10乗が1024であるということ。つまり10bitでおよそ10進数3桁が表現できます。
このことから、Javaのint型の数値の範囲を概算すると、int型が符号付の32bitなので
負号bitをはずすと、31bitで表現されるから、1bit + 10bit *3 と分解して、
2 * 1024 * 1024 * 1024 ≒ 2 * 1000 * 1000 * 1000 = 2* 109 = 2,000,000,000
つまるところ0が9個、20億ぐらいが上限ということになります。(正確には2,147,483,647)
同様に符号付64bitのlongだと 3bit * 1000 ^ 6 で 8 * 1018だから、0が18個までは大丈夫だけれども、
19個になると桁あふれしそうだ、ということが分かるわけです。
逆に10進数をデータとして格納するのに何bit必要かを概算するときは、
0が3つ付くごとに10bitを要すると思えばいいということになります。
なお、16進数1桁は2進数4桁なので、先ほどの10bit≒103と併せて計算することで
16進数の桁数と10進数の桁数を概算することもできます。
投稿日時 : 2007年10月18日 13:12