알아볼 것을 목록에서 고르고 밑 a와 지수 k를 입력한 뒤 ‘계산’을 누르세요. 답은 ‘주어진 근삿값(log₁₀2 ≒ 0.3010 등)을 쓰는 손계산’과 ‘실제로 끝까지 계산한 정확한 값’의 두 가지로 표시합니다.
이 페이지에서 할 수 있는 것
- \(2^{100}\) 같은 아주 큰 거듭제곱 \(a^k\)이 몇 자리 수인지, 밑 \(a\)와 지수 \(k\)만 넣으면 바로 계산할 수 있습니다
- 답은 ‘\(\log_{10} 2 \fallingdotseq 0.3010\) 같은 주어진 근삿값을 쓰는 손계산(고등학교 수학 풀이의 형태)’과 ‘실제로 끝까지 계산한 정확한 자릿수’의 두 가지로 표시합니다. 풀이와 같은 흐름의 계산 과정도 볼 수 있습니다
- 최고 자리의 숫자(맨 왼쪽 숫자)를 상용로그의 소수 부분으로 구하는 모드도 있습니다
- \(0.5^{100}\)처럼 1보다 작은 소수의 거듭제곱에서 ‘소수점 아래 몇째 자리에 처음으로 0이 아닌 숫자가 나타나는지’도 구할 수 있습니다
- 공식의 쉬운 해설과 Excel·Google 스프레드시트·Python에 복사해 쓸 수 있는 수식도 이 페이지에 정리되어 있습니다
이 계산은 어디에 쓰일까요?
인터넷 통신을 지키는 RSA 암호에서는 ‘2048비트 키’ 같은 말을 씁니다. 2048비트의 수란 \(2^{2048}\) 정도의 수를 말하며, 그 자릿수는 \(2048 \times \log_{10} 2 \fallingdotseq 616.5\)에서 617자리라는 것을 알 수 있습니다.
‘비트 수 × 0.3010 ≒ 십진수의 자릿수’라는 변환은 바로 이 페이지의 계산 그 자체입니다. 무차별 대입으로 깨는 것이 얼마나 비현실적인지는 이 자릿수의 어림으로 실감할 수 있습니다.
세균 중에는 조건이 갖춰지면 약 20분에 한 번 분열하는 것이 있습니다. 그 속도가 24시간 이어진다고 하면 분열은 72번이고, 세균의 수는 1개에서 \(2^{72}\)개가 됩니다. 자릿수는 \(72 \times 0.3010 \fallingdotseq 21.7\)에서 22자리(약 47해 개)로 어림할 수 있습니다.
실제로는 영양이나 공간의 한계가 있어 어딘가에서 멈추지만, ‘그냥 두면 자릿수가 다르게 늘어난다’는 것을 상용로그의 곱셈 한 번으로 알 수 있습니다. 이것이 ‘음식은 빨리 냉장한다’가 철칙인 이유입니다.
두께 0.1 mm인 종이는 접을 때마다 두께가 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(로그)의 줄임말입니다. 한국의 교과서에서는 밑 10을 생략해 \(\log N\)으로 쓰는 경우가 많습니다. |
| \(N\) | 엔 | 자릿수 등을 알아보고 싶은 수입니다. number(수)의 첫 글자입니다. 이 페이지에서는 거듭제곱 \(a^k\)이 이에 해당합니다. |
| \(a\) | 에이 | 밑(거듭 곱하는 수)입니다. ‘정해진 수’를 나타낼 때는 알파벳 앞쪽의 문자를 쓰는 관례가 있습니다. |
| \(k\) | 케이 | 지수(곱하는 횟수)입니다. \(2^{100}\)의 100이 이에 해당합니다. |
| \(n\) | 엔(소문자) | 자릿수입니다. number(수)의 첫 글자로, 개수나 자릿수를 나타낼 때 자주 씁니다. |
| \(10^n\) | 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\)가 되는지’를 나타내며, 십진법의 자릿수와 바로 이어지는 것이 특징입니다. 고등학교 ‘지수와 로그’ 단원에서 배웁니다. |
| 로그 | ‘밑을 몇 제곱하면 진수가 되는지’를 나타내는 수입니다. 거듭제곱과 정반대 방향의 계산입니다. |
| 진수 | 로그 안의 수입니다. \(\log_{10} N\)의 \(N\)을 말하며, 0보다 큰 수만 쓸 수 있습니다(진수 조건). |
| 밑 | 거듭제곱 \(a^k\)이나 로그 \(\log_{a} x\)의 ‘바탕이 되는 수’ \(a\)를 말합니다. 이 페이지의 입력란 ‘밑 \(a\)’가 이에 해당합니다. 상용로그는 밑이 10인 로그입니다. |
| 자릿수 | 정수를 썼을 때 늘어서는 숫자의 개수입니다. 1024는 네 자리 수입니다. ‘\(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은 소수 넷째 자리까지의 근삿값이므로, 이것을 10000배한 결과의 세세한 부분은 믿을 수 없습니다. 이 페이지의 ‘손계산과 정확한 계산의 어긋남’은 이 생각으로 설명할 수 있습니다. |
먼저 알아 두면 좋은 내용
이 페이지의 계산을 ‘의미를 알고’ 쓸 수 있도록, 먼저 알아 두면 좋은 내용을 정리했습니다.
막히면 이 표의 내용으로 돌아가 복습하는 것이 지름길입니다.
| 거듭제곱과 지수(중학교 1학년, 12~13세) |
|
| 지수의 확장(고등학교 ‘지수와 로그’ 단원, 15~18세) |
|
| 로그의 정의(고등학교 ‘지수와 로그’ 단원) |
|
| 로그의 성질(고등학교 ‘지수와 로그’ 단원) |
|
| 부등식 읽고 쓰기(중학교 2학년~고등학교) |
|
| 자릿값과 자리(초등학교 4학년~, 9~10세) |
|
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), 세 번째 표의 ‘=-INT(B3)’이 그대로 소수점 아래 몇째 자리인지의 답이 됩니다.
예의 수 그대로 계산하면 첫 번째 표는 31(자리), 두 번째 표는 1(최고 자리의 숫자), 세 번째 표는 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 # 지수 (몇 제곱인지)
# 상용로그를 사용 (손계산과 같은 생각)
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의 특징
전문 지식 없이도 직관적이고 간단하게 사용
개인정보를 등록하지 않고도 이용할 수 있습니다
"다운로드"를 누르면 파일이 자동으로 삭제됩니다
출처 표기 불필요
상업적 이용 허가 연락도 필요 없습니다