거듭제곱은 같은 수를 몇 번 곱했는지 적는 방법이다. 곱셈의 횟수를 세는 것이라서, 곱하면 횟수끼리 더해지고 거듭제곱을 다시 거듭제곱하면 횟수끼리 곱해진다. 0번, 음수 번, 분수 번 곱하기는 이 규칙이 계속 맞도록 뜻을 정한 것이다. 단, 음수를 분수 번 곱하면 규칙이 깨지므로 밑은 양수로 제한한다.
예시로 보기
\(2^3 \cdot 2^4\)는 \(2\)를 세 번 곱한 것과 네 번 곱한 것을 이어 곱했으니 \(2\)를 일곱 번 곱한 \(2^7\)이다. \((2^3)^2\)는 \(2^3\)을 두 번 곱했으니 \(2\)를 \(3 \times 2 = 6\)번 곱한 \(2^6\)이다.
규칙을 지키려면 새 지수의 뜻이 저절로 정해진다.
| 지수 | 규칙에서 나오는 뜻 | 예 |
|---|---|---|
| \(0\) | \(2^3 / 2^3 = 2^{3-3}\)이어야 하므로 \(1\) | \(2^0 = 1\) |
| 음수 | \(2^{-1} \cdot 2^1 = 2^0 = 1\)이어야 하므로 \(1/2\) | \(2^{-3} = \tfrac18\) |
| 분수 | \((8^{1/3})^3 = 8^1\)이어야 하므로 세제곱근 | \(8^{1/3} = 2\), \(8^{2/3} = 4\) |
컴퓨터공학에서는 2의 거듭제곱을 자주 어림한다. \(2^{10} = 1024 \approx 10^3\)이므로 \(2^{10k} \approx 10^{3k}\)다.
| 값 | 정확한 값 | 어림 |
|---|---|---|
| \(2^{10}\) | 1,024 | 천 |
| \(2^{20}\) | 1,048,576 | 백만 |
| \(2^{30}\) | 1,073,741,824 | 십억 |
| \(2^{32}\) | 4,294,967,296 | 약 \(4.3 \times 10^9\) (IPv4 주소 수) |
| \(2^{64}\) | 18,446,744,073,709,551,616 | 약 \(1.8 \times 10^{19}\) |
어림의 오차는 지수가 커질수록 쌓인다. \(2^{30}\)은 \(10^9\)보다 약 7% 크다.
정의
밑 \(a > 0\), \(b > 0\), 정수 \(m\), \(n\), 양의 정수 \(q\), 정수 \(p\)에 대해1
- \(a^n = \underbrace{a \times \cdots \times a}_{n\text{번}}\) (\(n \ge 1\)), \(a^0 = 1\), \(a^{-n} = \dfrac{1}{a^n}\)
- \(a^{p/q} = \left(\sqrt[q]{a}\right)^p\). 여기서 \(\sqrt[q]{a}\)는 \(q\)제곱해서 \(a\)가 되는 양수다.
이때 지수법칙이 맞는다.
\[a^m a^n = a^{m+n}, \qquad \frac{a^m}{a^n} = a^{m-n}, \qquad (a^m)^n = a^{mn}, \qquad (ab)^n = a^n b^n\]유리수 지수에서도 같은 법칙이 맞는다.
0, 음수, 분수 지수의 정의는 임의로 고른 것이 아니다. 지수법칙을 지키는 정의가 이것 하나뿐이다. 예를 들어 \(a^0 a^n = a^{0+n} = a^n\)이 맞으려면 \(a^0 = 1\)일 수밖에 없다.
밑을 양수로 두는 이유. 음수 밑에서는 분수 지수가 법칙과 부딪힌다. 실수 세제곱근으로 \((-8)^{1/3} = -2\)다. 그런데 \(\tfrac13 = \tfrac26\)이니 \((-8)^{2/6} = \left((-8)^2\right)^{1/6} = 64^{1/6} = 2\)로도 계산된다. 같은 수가 \(-2\)와 \(2\)로 갈린다.
활용
- 저장 용량. 1 KiB \(= 2^{10}\) B, 1 GiB \(= 2^{30}\) B이고, 1 kB \(= 10^3\) B, 1 GB \(= 10^9\) B다2. 제조사가 1 TB \(= 10^{12}\) B라고 판 디스크를 운영체제가 GiB로 세면 \(10^{12} / 2^{30} \approx 931.3\) GiB로 보인다.
- 부동소수점. 배정밀도 수는 (가수) \(\times 2^{(\text{지수})}\) 꼴이고 가수는 53비트다. 그래서 \(2^{53}\)까지의 정수는 모두 정확히 담지만 \(2^{53} + 1\)은 담지 못하고 \(2^{53}\)으로 반올림된다2.
- 크기 어림. “\(2^{64}\)가지 키를 초당 \(10^9\)개씩 시험하면?” 같은 질문을 \(1.8 \times 10^{19} / 10^9 = 1.8 \times 10^{10}\)초로 어림한다. 1년이 약 \(3.2 \times 10^7\)초이니 약 600년이다(정확히는 약 585년).
- 파이썬의
(-8) ** (1/3)은 \(-2\)가 아니라 복소수1.0000+1.7321j를 낸다. 음수 밑의 분수 지수를 복소수로 해석하기 때문이다. 실수 세제곱근이 필요하면 부호를 따로 처리한다. - 알고리즘에서: \(2^n\)가지를 모두 보는 방법은 \(2^{20}\)이 약 백만이라 \(n\)이 20쯤일 때까지만 시간 안에 끝난다(시간 복잡도로 방법 고르기). 파이썬의
/는 늘float를 내므로, \(2^{53}\)을 넘는 정수의 몫은//로 구한다(파이썬 기본 문법). 1과 \(1 + 2^{-52}\) 사이에는 배정밀도 수가 없어서, 계산 기하 기초는 큰 좌표의 기울기를 나눗셈 대신 정수 외적으로 비교한다.
연결
자주 하는 오해
틀렸다. \((ab)^2 = a^2 b^2\)가 맞으니 덧셈에도 맞을 것처럼 보인다. 지수법칙은 곱에 대한 규칙이다. 합의 제곱은 \((a + b)^2 = a^2 + 2ab + b^2\)이다. \(a = b = 1\)이면 \((1 + 1)^2 = 4\)인데 \(1^2 + 1^2 = 2\)다.
확인 문제
C1 a⁰ = 1, a⁻ⁿ = 1/aⁿ로 정하는 이유를 지수법칙으로 설명하라.
답: \(a^m a^n = a^{m+n}\)이 \(0\)과 음수 지수에서도 맞게 하려면 \(a^0 a^n = a^n\)이어야 하므로 \(a^0 = 1\)이다. 또 \(a^{-n} a^n = a^0 = 1\)이어야 하므로 \(a^{-n} = 1/a^n\)이다.
흔한 오답: “\(a^0 = 0\)”. \(a\)를 한 번도 곱하지 않았으니 0이라고 생각하기 쉽지만, 곱셈에서 아무것도 안 한 상태는 \(1\)이다.
C2 (a) 2³²는 대략 10의 몇 제곱인가? (b) 1 TB(10¹² 바이트) 디스크는 운영체제에서 대략 몇 GiB로 보이는가?
답: (a) \(2^{32} = 2^2 \cdot 2^{30} \approx 4 \times 10^9\). 정확히는 \(4{,}294{,}967{,}296 \approx 4.3 \times 10^9\)다. (b) \(10^{12} / 2^{30} \approx 931.3\) GiB.
흔한 오답: (b)에서 1000 GiB라고 하는 것. GiB는 \(10^9\)가 아니라 \(2^{30}\) 바이트다.
C3 밑이 음수일 때 (aᵐ)ⁿ = aᵐⁿ이 깨지는 예를 들라.
답: \((-8)^{1/3} = -2\)(실수 세제곱근)인데, \(\tfrac13 = \tfrac26\)으로 보고 \(\left((-8)^2\right)^{1/6} = 64^{1/6} = 2\)로 계산하면 값이 다르다. 그래서 유리수 지수는 밑이 양수일 때만 쓴다.