調べたいことをプルダウンで選び、底の数 a と指数 k を入力して「計算する」を押してください。答えは「与えられた近似値(log₁₀2 ≒ 0.3010 など)を使う手計算」と「実際に最後まで計算した正確な値」の両方で表示します。
このページでできること
- \(2^{100}\) のような巨大な累乗 \(a^k\) が何桁の数になるかを、底の数 \(a\) と指数 \(k\) を入れるだけでその場で計算できます
- 答えは「\(\log_{10} 2 \fallingdotseq 0.3010\) のような与えられた近似値を使う手計算(数学IIの答案の形)」と「実際に最後まで計算した正確な桁数」の2通りで表示。答案と同じ流れの途中式も見られます
- 最高位の数字(一番左の数字)を、常用対数の小数部分から求めるモードもあります
- \(0.5^{100}\) のような 1 より小さい小数の累乗が「小数第何位に初めて 0 でない数字が現れるか」も求められます
- 式のやさしい解説・Excel/Googleスプレッドシート/Python用のコピペ数式・計算ドリル(演習問題)もこのページにまとまっています
この計算は何の役に立つ?
インターネットの通信を守るRSA暗号では「2048ビットの鍵」のような言い方をします。2048ビットの数とは \(2^{2048}\) 程度の数のことで、その桁数は \(2048 \times \log_{10} 2 \fallingdotseq 616.5\) から 617 桁とわかります。
「ビット数 × 0.3010 ≒ 10進数の桁数」という変換は、まさにこのページの計算そのものです。総当たりで破るのがどれほど非現実的かは、この桁数の見積もりで実感できます。
細菌には条件がそろうとおよそ20分に1回分裂するものがあります。仮にそのペースが24時間続くと分裂は72回で、菌の数は1個から \(2^{72}\) 個。桁数は \(72 \times 0.3010 \fallingdotseq 21.7\) から 22 桁(約47垓個)と見積もれます。
実際には栄養や空間の限界があってどこかで頭打ちになりますが、「放置すると桁違いに増える」ことが常用対数の掛け算1回でわかる——これが「食品は早く冷蔵する」が鉄則である理由です。
厚さ 0.1mm の紙を折るたびに厚さは2倍になります。仮に42回折れるとすると、厚さは \(0.1 \times 2^{42}\) mm ≒ 44万 km で、月までの距離(約38万km)を超えます。
実際には紙は7〜8回程度しか折れないので、これは思考実験です。それでも「2倍をくり返すと桁がどれだけ速く増えるか」は \(k \times \log_{10} 2\) の一次式で正確に予測でき、直感とのずれを数字で確かめられます。
自然に集まった金額データでは、最高位の数字が 1 になる割合が約30.1%(\(\log_{10} 2\) に一致)、2 になる割合が約17.6%……と偏ることが知られています(ベンフォードの法則)。
人が架空の数字をでっち上げると、この分布からずれやすいため、会計監査や不正検知の現場でチェックに使われています。「最高位の数字は常用対数の小数部分で決まる」というこのページの仕組みが、法則の土台です。
太陽までの距離 約1.496×10⁸ km、水素原子の大きさ 約1×10⁻¹⁰ m のように、科学では大きすぎる・小さすぎる数を「10 の累乗」で表します(科学的記数法)。
この 10 の指数がまさに常用対数の整数部分で、「桁数の感覚」そのものです。桁で世界をとらえる練習として、天文学や化学(アボガドロ数 約6×10²³ など)ほど良い教材はありません。
式と図
用語・記号の解説
記号
| \(\log_{10} N\) | ログ・じゅう・エヌ | \(N\) の常用対数(底が10の対数)。「10 を何乗すると \(N\) になるか」を表す数です。log は logarithm(対数)の略です。 |
| \(N\) | エヌ | 桁数などを調べたい数。number(数)の頭文字です。このページでは累乗 \(a^k\) がこれにあたります。 |
| \(a\) | エー | 底の数(掛け合わせる数)。「決まった数」を表すときはアルファベットの最初の方の文字を使う慣例があります。 |
| \(k\) | ケー | 指数(掛け合わせる回数)。\(2^{100}\) の 100 がこれにあたります。 |
| \(n\) | エヌ(小文字) | 桁数。number(数)の頭文字で、個数や桁数を表すのによく使われます。 |
| \(10^n\) | じゅうのエヌじょう | 10 を \(n\) 回掛け合わせた数。1 のあとに 0 が \(n\) 個並びます(\(10^3 = 1000\))。\(n+1\) 桁で一番小さい数です。 |
| \(f\) | エフ | 常用対数の小数部分。fractional part(小数部分)の頭文字です。最高位の数字はこの \(f\) だけで決まります。 |
| \(d\) | ディー | 最高位の数字(一番左の数字)。digit(数字)の頭文字です。 |
| \(m\) | エム | 「小数第 \(m\) 位に初めて 0 でない数字が現れる」というときの位置の番号です。1 より小さい数の「小ささの桁」を表します。 |
| \([x]\) | ガウスきごう | \(x\) を超えない最大の整数(整数部分)。高校ではガウス記号 \([x]\)、大学以降では床関数 \(\lfloor x \rfloor\) と書きます。マイナスでは注意が必要で、\([-30.10] = -31\) です。 |
用語
| 常用対数 | じょうようたいすう | 底が10の対数 \(\log_{10} x\) のことです。「10 を何乗すると \(x\) になるか」を表し、10進法の桁数と直結しているのが特長です。高校の数学IIで学びます。 |
| 対数 | たいすう | 「底を何乗すると真数になるか」を表す数。累乗(べき乗)のちょうど逆の操作です。 |
| 真数 | しんすう | 対数の中身の数。\(\log_{10} N\) の \(N\) のことで、0 より大きい数だけが使えます(真数条件)。 |
| 底 | てい | 累乗 \(a^k\) や対数 \(\log_{a} x\) の「土台になる数」\(a\) のこと。このページの入力欄「底の数 \(a\)」がこれにあたります。常用対数は底が 10 の対数です。 |
| 桁数 | けたすう | 整数を書いたときに並ぶ数字の個数。1024 は 4 桁です。「\(10^{n-1}\) 以上 \(10^n\) 未満の整数は \(n\) 桁」が数学での言い換えです。 |
| 最高位 | さいこうい | 数を書いたときの一番左の位。1024 の最高位の数字は 1 です。常用対数の小数部分から求められます。 |
| 累乗 | るいじょう | 同じ数を何回も掛け合わせる計算。\(2^{3} = 2 \times 2 \times 2\) のように、右上に小さく書いた指数が掛ける回数を表します。べき乗ともいいます。 |
| 指数 | しすう | 累乗の右上に小さく書く「何乗するか」の数。\(2^{100}\) の 100 が指数です。 |
| 整数部分 | せいすうぶぶん | 数を「超えない最大の整数」と「残り」に分けたときの整数の方。30.10 なら 30。マイナスでは \(-30.10\) の整数部分は \(-31\) になることに注意(小数部分を必ず 0 以上 1 未満にとるため)。 |
| 小数部分 | しょうすうぶぶん | 数を「超えない最大の整数」と「残り」に分けたときの残りの方。30.10 なら 0.10。小数部分は必ず 0 以上 1 未満にとるので、マイナスでは \(-30.10\) の小数部分は \(0.90\) になることに注意。 |
| 近似値 | きんじち | 本当の値に近い、扱いやすく丸めた値。\(\log_{10} 2 = 0.30102\cdots\) を 0.3010 で代用するのがその例です。丸めた分だけ誤差があり、誤差は掛け算で拡大されます。 |
| 有効数字 | ゆうこうすうじ | 測定値や近似値で「信頼できる桁」のこと。0.3010 は小数第4位までの近似値なので、これを 10000 倍した結果の細かい部分は信頼できません。このページの「手計算と正確な計算のずれ」はこの考え方で説明できます。 |
前提として理解しておくといいこと
このページの計算を「意味がわかって」使えるようになるために、前提として理解しておくといいことをまとめました。
つまずいたら、この表の内容に戻って復習するのが近道です。
| 累乗・指数(中学1年) |
|
| 指数の拡張(高校 数学II) |
|
| 対数の定義(高校 数学II) |
|
| 対数の計算法則(高校 数学II) |
|
| 不等式の読み書き(中学1年〜高校 数学I) |
|
| 位取りと桁(小学4年〜) |
|
Excelで計算する方法
| 底の数 a | 2 |
| 指数 k | 100 |
| 常用対数の値 k×log10(a) | =B2*LOG10(B1) |
| 桁数(整数部分+1) | =INT(B3)+1 |
| 底の数 a | 2 |
| 指数 k | 100 |
| 常用対数の値 k×log10(a) | =B2*LOG10(B1) |
| 常用対数の小数部分 | =B3-INT(B3) |
| 最高位の数字 | =INT(10^B4) |
| 底の数 a(1より小さい小数) | 0.5 |
| 指数 k | 100 |
| 常用対数の値 k×log10(a) | =B2*LOG10(B1) |
| 初めて0でない数字が現れる位置(小数第◯位) | =-INT(B3) |
LOG10 が常用対数、INT は「その数を超えない最大の整数」(整数部分)です。INT はマイナスでも小さい方へ切り捨てるので(INT(-30.1) は -31)、3つ目の表の「=-INT(B3)」がそのまま小数第◯位の答えになります。
例の数値のまま計算すると、1つ目の表は 31(桁)、2つ目の表は 1(最高位の数字)、3つ目の表は 31(小数第31位)になります。
Excel の数値はおよそ15桁の精度で計算されるため、指数がとても大きいときは 10 の累乗の境界付近で答えが 1 ずれることがあります。
Googleスプレッドシートで計算する方法
| 底の数 a | 2 |
| 指数 k | 100 |
| 常用対数の値 k×log10(a) | =B2*LOG10(B1) |
| 桁数(整数部分+1) | =INT(B3)+1 |
| 底の数 a | 2 |
| 指数 k | 100 |
| 常用対数の値 k×log10(a) | =B2*LOG10(B1) |
| 常用対数の小数部分 | =B3-INT(B3) |
| 最高位の数字 | =INT(10^B4) |
| 底の数 a(1より小さい小数) | 0.5 |
| 指数 k | 100 |
| 常用対数の値 k×log10(a) | =B2*LOG10(B1) |
| 初めて0でない数字が現れる位置(小数第◯位) | =-INT(B3) |
表を丸ごとコピーしてA1セルに貼り付け、底の数と指数を自分の数値に書き換えてください。
Pythonで計算する方法
import math
a = 2 # 底の数(2以上の整数)
k = 100 # 指数(何乗するか)
# 常用対数を使った求め方(数学IIの答案と同じ考え方)
log_value = k * math.log10(a)
digit_count = math.floor(log_value) + 1 # 整数部分 + 1 が桁数
fractional = log_value - math.floor(log_value)
leading_digit = math.floor(10 ** fractional) # 小数部分から最高位の数字
print(f"常用対数の値: {log_value}")
print(f"桁数: {digit_count} 桁, 最高位の数字: {leading_digit}")
# 正確な計算(Pythonの整数は桁数の上限がないので、実際に最後まで計算して確かめられる)
actual = a ** k
print(f"実際の桁数: {len(str(actual))} 桁, 実際の最高位: {str(actual)[0]}")
# 1より小さい小数の場合(0.5の100乗が小数第何位か)は常用対数がマイナスになる
position = -math.floor(100 * math.log10(0.5))
print(f"0.5の100乗は小数第{position}位に初めて0でない数字が現れる")
数式記述言語(LaTeX等)での書き方(コピペ可)
log₁₀(aᵏ) = k log₁₀ a
\log_{10} a^{k} = k \log_{10} a
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>log</mi><mn>10</mn></msub>
<msup><mi>a</mi><mi>k</mi></msup>
<mo>=</mo>
<mi>k</mi>
<msub><mi>log</mi><mn>10</mn></msub>
<mi>a</mi>
</mrow>
</math>
log_10 (a^k) = k log_10 a
Log10[a^k] == k*Log10[a]
log10(a^k) = k*log10(a);
log10(a^k) == k*log10(a)
log_10(a^k) = k log_10(a)
10ⁿ⁻¹ ≤ N < 10ⁿ
10^{n-1} \le N < 10^{n}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mn>10</mn><mrow><mi>n</mi><mo>−</mo><mn>1</mn></mrow></msup>
<mo>≤</mo>
<mi>N</mi>
<mo><</mo>
<msup><mn>10</mn><mi>n</mi></msup>
</mrow>
</math>
10^(n-1) <= N < 10^n
IntegerLength[a^k]
length(a^k);
floor(log10(a^k)) + 1
10^(n-1) ≤ N < 10^n
log₁₀ d ≤ f < log₁₀(d+1)
\log_{10} d \le f < \log_{10} (d+1)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>log</mi><mn>10</mn></msub>
<mi>d</mi>
<mo>≤</mo>
<mi>f</mi>
<mo><</mo>
<msub><mi>log</mi><mn>10</mn></msub>
<mo>(</mo><mi>d</mi><mo>+</mo><mn>1</mn><mo>)</mo>
</mrow>
</math>
log_10 d <= f < log_10 (d+1)
First[IntegerDigits[a^k]]
trunc(10^frac(k*log10(a)));
floor(10^(mod(k*log10(a), 1)))
log_10(d) ≤ f < log_10(d+1)
10⁻ᵐ ≤ N < 10⁻ᵐ⁺¹
10^{-m} \le N < 10^{-m+1}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msup><mn>10</mn><mrow><mo>−</mo><mi>m</mi></mrow></msup>
<mo>≤</mo>
<mi>N</mi>
<mo><</mo>
<msup><mn>10</mn><mrow><mo>−</mo><mi>m</mi><mo>+</mo><mn>1</mn></mrow></msup>
</mrow>
</math>
10^(-m) <= N < 10^(-m+1)
-Floor[Log10[a^k]]
-floor(log10(a^k));
-floor(log10(a^k))
10^(-m) ≤ N < 10^(-m+1)
ChatGPT に聞いて計算してもらう方法
あなたは数学(常用対数と桁数)の計算アシスタントです。次の計算を、必ずPythonコードを実際に実行して行い、実行結果の数値だけを根拠に回答してください(暗算や推測で答えないでください)。 1. 2の100乗は何桁か。k × log10(a) の整数部分に1を足す方法と、len(str(2**100)) で実際に数える方法の両方で求め、一致するか確かめてください。 2. 2の100乗の最高位の数字(一番左の数字)を、常用対数の小数部分から求め、実際の値とも突き合わせてください。 3. 0.5の100乗は小数第何位に初めて0でない数字が現れるか。-floor(100 × log10(0.5)) で求めてください。 計算に使った式と、実行結果の数値を示してください。
計算ドリル(演習問題)
このページの式を、自分の手で計算できるようになるための演習問題です。
答えと解説は解答ページにあります。
使い方
-
1数値を入力計算したい数値を入力欄に入力します
-
2計算「計算する」ボタンを押します
-
3結果を確認計算結果がその場に表示されます。計算の考え方や式の解説も同じページで確認できます
DataChefの特徴
専門知識不要、直感的で簡単な操作
個人情報を登録することなく使用できます
「ダウンロード」押下でファイルを自動削除
クレジット表記不要
商用利用許諾の連絡も不要です
