这是 数学重学路线图 阶段〇的子页面
幂、根号与指数
乘方是重复乘法,开方是乘方的逆运算
上一节:01-分数与小数
为什么要学这个
指数运算是计算机科学的基石:2^10 = 1024,程序员的”千”
安全领域:密钥强度用 2^n 衡量,AES-256 = 2^256 种可能的密钥
大数据领域:数据量级 KB/MB/GB/TB/PB,每级差 2^10 = 1024 倍
算法复杂度:O(n^2)、O(2^n)、O(log n) 都涉及指数概念
科学计数法:处理极大或极小的数,如纳秒级时间戳
乘方/幂
基本概念
2^3 = 2 × 2 × 2 = 8
底数 (base):被重复相乘的数 → 2
指数 (exponent):重复乘的次数 → 3
幂 (power):运算结果 → 8
读法:2 的 3 次方,2 的 3 次幂
平方:面积的直觉
3^2 = 9
想象一个边长为 3 的正方形,面积就是 9
1 | ┌───┬───┬───┐ |
“平方”这个词就来自正方形(square)
面积单位用 m^2,就是因为面积 = 长 × 宽
立方:体积的直觉
2^3 = 8
想象一个边长为 2 的正方体,体积就是 8
“立方”这个词就来自正方体(cube)
体积单位用 m^3
常用幂值(程序员必记)
1 | 2^0 = 1 |
指数法则(必须熟记)
同底数幂相乘:指数相加
a^m × a^n = a^(m+n)
例:2^3 × 2^4 = 2^(3+4) = 2^7 = 128
直觉:2 乘了 3 次,再乘 4 次,一共乘了 7 次
同底数幂相除:指数相减
a^m ÷ a^n = a^(m-n)
例:2^7 ÷ 2^3 = 2^(7-3) = 2^4 = 16
直觉:乘了 7 次再消去 3 次,剩 4 次
幂的幂:指数相乘
(a^m)^n = a^(m×n)
例:(2^3)^4 = 2^(3×4) = 2^12 = 4096
直觉:先乘 3 次得到一个数,再把这个数乘 4 次
积的幂:分别求幂
(a × b)^n = a^n × b^n
例:(2 × 3)^4 = 2^4 × 3^4 = 16 × 81 = 1296
验证:6^4 = 1296
零次幂:任何非零数的 0 次方等于 1
a^0 = 1(a ≠ 0)
为什么?从指数相减推导:a^n ÷ a^n = a^(n-n) = a^0 = 1
0^0 是一个争议话题,通常约定为 1
负指数:取倒数
a^(-n) = 1 / a^n
例:2^(-3) = 1/2^3 = 1/8 = 0.125
直觉:负指数就是”翻到分母去”
推导:a^m × a^(-m) = a^0 = 1 → a^(-m) = 1/a^m
指数法则速查表
1 | 法则 公式 例子 |
根号/开方
平方根
√9 = 3,因为 3^2 = 9
√ 就是在问”什么数自乘得到这个数”
注意:(-3)^2 = 9,所以 9 有两个平方根:3 和 -3
但 √9 通常只取正值,叫算术平方根
立方根
∛8 = 2,因为 2^3 = 8
∛(-8) = -2,因为 (-2)^3 = -8
立方根可以对负数开方(平方根不行,在实数范围内)
n 次方根
ⁿ√a 就是问”什么数的 n 次方等于 a”
⁴√16 = 2,因为 2^4 = 16
根号的另一种写法:分数指数
这是连接幂和根号的桥梁,非常重要
√a = a^(1/2)
∛a = a^(1/3)
ⁿ√a = a^(1/n)
更一般地:a^(m/n) = (ⁿ√a)^m = ⁿ√(a^m)
例:8^(2/3) = (∛8)^2 = 2^2 = 4
常见根号值
√2 ≈ 1.414(对角线与边长之比)
√3 ≈ 1.732(等边三角形高与边长之比)
√5 ≈ 2.236
这些都是无理数,小数部分永远不循环
科学计数法
什么是科学计数法
把数写成 a × 10^n 的形式(1 ≤ a < 10)
314000000 = 3.14 × 10^8
0.000005 = 5 × 10^(-6)
为什么需要
太大或太小的数字,直接写容易数错零
光速 = 299792458 m/s ≈ 3 × 10^8 m/s
电子质量 = 0.00000000000000000000000000000091 kg = 9.1 × 10^(-31) kg
计算机中的应用
存储单位
1 KB = 10^3 字节(严格说是 2^10 = 1024)
1 MB = 10^6, 1 GB = 10^9, 1 TB = 10^12
1 PB = 10^15(大数据常见量级)
时间单位
1 毫秒(ms) = 10^(-3) 秒
1 微秒(μs) = 10^(-6) 秒
1 纳秒(ns) = 10^(-9) 秒
CPU 一个时钟周期约 0.3 ns(3 GHz 处理器)
Python 中的科学计数法
3.14e8 = 3.14 × 10^8 = 314000000.0
5e-6 = 5 × 10^(-6) = 0.000005
指数增长的直觉
折纸问题
一张纸厚 0.1mm
折 1 次 = 0.2mm,折 2 次 = 0.4mm
折 n 次 = 0.1 × 2^n mm
折 42 次 = 0.1 × 2^42 mm ≈ 4.4 × 10^8 mm ≈ 44 万公里
地月距离约 38 万公里 → 折 42 次超过地月距离!
这就是指数增长的恐怖之处
程序员必记的 2 的幂
2^10 ≈ 1000(千)→ 1 KB
2^20 ≈ 100 万(百万)→ 1 MB
2^30 ≈ 10 亿 → 1 GB
2^32 ≈ 43 亿 → IPv4 地址数量、uint32 上限
2^64 ≈ 1.8 × 10^19 → 雪花算法 ID 空间
算法复杂度与指数
O(1):常数,和数据量无关
O(log n):二分查找,每次砍一半
O(n):遍历一遍
O(n log n):排序
O(n^2):双重循环
O(2^n):指数爆炸,暴力枚举子集
n=30 时,n^2 = 900,2^n ≈ 10 亿 → 差了 100 万倍
安全领域应用
密钥空间
AES-128:密钥有 2^128 ≈ 3.4 × 10^38 种可能
AES-256:密钥有 2^256 ≈ 1.16 × 10^77 种可能
宇宙中原子数量约 10^80,AES-256 的密钥空间接近这个量级
暴力破解 AES-256 在物理上不可能
密码强度
8 位纯数字密码:10^8 = 1 亿种,暴力破解只需数秒
8 位大小写字母+数字:62^8 ≈ 2.18 × 10^14,约 2 天
12 位大小写字母+数字+特殊字符:95^12 ≈ 5.4 × 10^23,约 17 万年
每增加一位,难度乘以字符集大小 → 指数增长
哈希碰撞(生日攻击)
n 位哈希值的碰撞概率在约 2^(n/2) 次尝试后显著
MD5(128位):2^64 ≈ 1.8 × 10^19 次就可能碰撞
SHA-256:2^128 次,目前安全
大数据领域应用
数据量级
1 | 级别 字节数 约等于 典型场景 |
布隆过滤器中的指数
误判率 ≈ (1 - e^(-kn/m))^k
其中 k 是哈希函数个数,n 是元素数量,m 是位数组大小
位数组越大,误判率指数级下降
分布式系统中的 2 的幂
一致性哈希环:通常用 2^32 个虚拟节点
分区数:Kafka 分区常设为 2 的幂次
位运算优化:n % 2^k 等价于 n & (2^k - 1),效率更高
Python 代码实战
幂运算基础
1 | # Python 中幂运算的三种方式 |
根号与开方
1 | import math |
科学计数法与数据量级
1 | # Python 中的科学计数法 |
密码强度计算
1 | import math |
常见误区
误区1:(-3)^2 = -9
错!(-3)^2 = (-3) × (-3) = 9
但 -3^2 = -(3^2) = -9(注意有没有括号!)
误区2:√(a^2) = a
不完全对:√((-3)^2) = √9 = 3 ≠ -3
正确:√(a^2) = |a|(绝对值)
误区3:2^3 × 3^3 = 6^6
错!2^3 × 3^3 = (2×3)^3 = 6^3 = 216
指数不相加,底数相乘,指数保持不变
误区4:(a+b)^2 = a^2 + b^2
大错特错!(a+b)^2 = a^2 + 2ab + b^2
漏掉交叉项 2ab 是最经典的代数错误
误区5:0.999… ≠ 1
实际上 0.999… = 1,这是数学事实
证明:设 x = 0.999…,则 10x = 9.999… → 10x - x = 9 → x = 1
练习题
题目1:指数法则
化简:(2^3 × 4^2) / 8^2
提示:把所有底数统一成 2
答案:4 = 2^2, 8 = 2^3 → (2^3 × 2^4) / 2^6 = 2^7 / 2^6 = 2^1 = 2
题目2:分数指数
计算 27^(2/3)
答案:(∛27)^2 = 3^2 = 9
题目3:安全应用
某系统使用 64 位随机 token 做会话 ID
如果攻击者每秒能尝试 10 万个 token,暴力破解平均需要多少年?
答案:2^64 / (2 × 10^5) / (365.25 × 24 × 3600) ≈ 2.92 × 10^8 年(约 3 亿年)
题目4:编程题
用 Python 写一个函数,输入文件大小(字节),输出人类可读格式
例:1536 → “1.50 KB”,1073741824 → “1.00 GB”
题目5:指数增长
某数据库每天数据量增长 2%,现在有 1 TB
多少天后达到 2 TB?(提示:用对数求解 1.02^n = 2)
答案:n = log(2) / log(1.02) ≈ 35 天
小结
幂是重复乘法,指数法则是幂运算的基本工具
根号是幂的逆运算,分数指数统一了幂和根号
科学计数法处理极大/极小数字
指数增长极其恐怖,2^10 ≈ 1000 是程序员基本常识
安全和大数据领域处处都是指数和幂
下一节:03-比例百分比与增长率
| 上一章 | 目录 | 下一章 |
|---|---|---|
| 01-分数与小数 | 数学重学路线图 | 03-比例百分比与增长率 |