存储单位换算
计算机中一切数据最终都是 0 和 1(二进制),最小单位是 bit(位)。
1 bit(位) = 一个 0 或 1
1 Byte(字节) = 8 bit ← 这是最基本的存储单元
1 KB = 1024 Byte ← 约一千字节
1 MB = 1024 KB ← 约一百万字节
1 GB = 1024 MB ← 约十亿字节
1 TB = 1024 GB ← 约一万亿字节
换算关系:
1 KB = 1024 B = 2^10 B
1 MB = 1024 KB = 2^20 B = 1,048,576 B
1 GB = 1024 MB = 2^30 B = 1,073,741,824 B
速记口诀:每上一级乘以 1024(2 的 10 次方)。
注意:硬盘厂商用 1000 进制标注容量(所以买的 512GB 硬盘实际只有约 476 GiB),但编程中一律使用 1024 进制。
计算机只认识数字,要存储文字就需要「编码」把每个字符映射成数字。
常见编码及占用空间:
ASCII 编码(英文字符):
每个英文字母 / 数字 / 符号 = 1 字节
如 'A' = 65,'a' = 97,'0' = 48
UTF-8 编码(国际通用,前端最常用):
英文字母 / 数字 = 1 字节
中文汉字 = 3 字节
Emoji 表情 = 4 字节
UTF-16 编码(JavaScript 内部使用):
大部分字符(含中文)= 2 字节
罕见字符 / Emoji = 4 字节
实际计算练习
一篇 400 字的纯中文文章占多少内存?
假设用 UTF-8 编码:
400 个汉字 × 3 字节/汉字 = 1200 字节 = 1.17 KB
假设用 UTF-16 编码(JS 字符串内部):
400 个汉字 × 2 字节/汉字 = 800 字节 = 0.78 KB
问:一张 1920×1080 的未压缩图片占多少空间?
像素数:1920 × 1080 = 2,073,600 像素
每像素颜色(RGB):3 字节(红/绿/蓝各 1 字节,即 24 位色)
如果有透明度(RGBA):4 字节(加 1 字节 Alpha 通道)
未压缩大小:
RGB: 2,073,600 × 3 = 6,220,800 字节 ≈ 5.93 MB
RGBA: 2,073,600 × 4 = 8,294,400 字节 ≈ 7.91 MB
问:前端上传限制 5MB,最多能传多少字的文本?**
5 MB = 5 × 1024 × 1024 = 5,242,880 字节
纯英文:5,242,880 ÷ 1 = 5,242,880 个字符(约 520 万字)
纯中文(UTF-8):5,242,880 ÷ 3 = 1,747,626 个字符(约 175 万字)
前端开发中的实用对照表
| 数据类型 | 典型大小 | 说明 |
| 一个英文字符 | 1 B | ASCII / UTF-8 |
| 一个中文汉字 | 3 B(UTF-8) | 前端传输通常用 UTF-8 |
| 一个 Emoji | 4 B | UTF-8 编码 |
| 一条短信(70 字) | ~210 B | UTF-8 中文 |
| 一篇文章(400 字) | ~1.2 KB | UTF-8 中文 |
| 一个小图标(favicon) | 1-5 KB | .ico / .png |
| 一张 UI 切图 | 50-300 KB | 优化后的 PNG/WebP |
| 一张手机照片 | 2-5 MB | JPEG |
| 一首 MP3 歌曲 | 3-8 MB | 128-320kbps |
| 一部打包后的前端项目(JS+CSS) | 200KB - 2MB | Gzip 后通常 < 500KB |
| 一个 node_modules 目录 | 200MB - 1GB+ | 这就是为什么 node_modules 是黑洞 |
网速与带宽
网速单位通常是 bit(位),而文件大小用 Byte(字节):
100 Mbps 宽带 = 100 Megabit per second
实际下载速度 = 100 ÷ 8 = 12.5 MB/s
常见换算:
100 Mbps 宽带 → 最快约 12.5 MB/s 下载速度
1000 Mbps(千兆) → 最快约 125 MB/s
前端性能指标参考:
首页加载总资源 < 1MB(未压缩)为优秀
单个 JS bundle < 250KB(Gzip 后)为合理
接口响应时间 < 200ms 用户无感知
图片建议使用 WebP 格式,体积比 PNG 小 30-50%