比特和字节的区别
比特(bit)是一个二进制位,取值为 0 或 1;字节(byte)是 8 个比特组成的一组。网络以比特(b)衡量速度,而文件、内存和硬盘以字节(B)计量大小,所以两者换算永远是乘以或除以 8。
比特和字节是什么
比特是数字信息的最小单位:一个二进制位,有两种可能的取值。字节是 8 个比特,能表示 256 种不同的值,因为 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 = 256。
8 比特一字节之所以成为标准,是因为这个大小正好适合表示一个文本字符,也便于内存寻址。由于早期计算机用过其他长度的字节,标准文档有时会用“八位组”(octet)来明确表示 8 比特。如今你能遇到的字节,都是 8 比特。
1 B = 8 b 1 kB = 1,000 B = 8,000 b 1 MB = 1,000,000 B = 8,000,000 b
为什么网络用比特,存储用字节
网络链路在铜线、光纤或无线信道上一个符号接一个符号地发送数据,所以它的容量天然以比特每秒计算。这个惯例贯穿整个网络领域:以太网口标称 1 Gbps 或 10 Gbps,USB 2.0 标称 480 Mbps,家庭宽带以 Mbps 计。
存储和内存则以字节组织。文件是一串字节,内存地址指向字节,保存或拷贝文件的软件也以字节报告大小和速度:kB、MB、GB 和 MB/s。
两种惯例各自都很合理。麻烦出在拿以 Mbps 计的宽带和以 GB 计的文件作比较的时候,这也是 Mbps 与 MB/s 成为最常见困惑之一的原因。
前缀:十进制(kB、MB)与二进制(KiB、MiB)
千(kilo)、兆(mega)、吉(giga)、太(tera)是国际单位制(SI)前缀,表示 1,000 的幂。由于计算机内存以 2 的幂为单位,软件长期用同样的名字表示 1,024 的幂。为了消除歧义,IEC 另外定义了二进制前缀:kibi(Ki)、mebi(Mi)、gibi(Gi)和 tebi(Ti)。
| 十进制单位 | 字节数 | 二进制单位 | 字节数 | 二进制大出 |
|---|---|---|---|---|
| 1 kB | 1,000 | 1 KiB | 1,024 | 2.4% |
| 1 MB | 1,000,000 | 1 MiB | 1,048,576 | 4.9% |
| 1 GB | 1,000,000,000 | 1 GiB | 1,073,741,824 | 7.4% |
| 1 TB | 1,000,000,000,000 | 1 TiB | 1,099,511,627,776 | 10.0% |
每升一级差距就更大,所以对小文件几乎无所谓,对大硬盘就很明显。网络中的比特前缀永远是十进制:1 Mbps 正好是每秒 1,000,000 比特。
为什么 1 TB 硬盘只显示约 931 GB
硬盘厂商使用十进制单位,所以 1 TB 硬盘容纳 1,000,000,000,000 字节。部分操作系统(包括 Windows)按 1,024 的幂计算,却仍然写成“GB”。除以 1,073,741,824 得到 931.3,于是硬盘显示为“931 GB”,其实一点也没少。同理,500 GB 的硬盘会显示为约 465.7。
下载也是一样。某个程序标为“1 GB”的文件,可能其实是 1 GiB,即 1,073,741,824 字节、8,589,934,592 比特。在 100M 宽带上需要约 85.9 秒,而十进制的 1 GB 只要 80 秒。本站的计算器把两者分开:请明确选择 GB 或 GiB。
如何无歧义地书写单位
| 符号 | 含义 | 说明 |
|---|---|---|
| b | 比特 | 小写 b |
| B | 字节(8 比特) | 大写 B |
| kB | 千字节,1,000 字节 | 很多软件写作“KB”,有时指 1,024 字节 |
| KiB | 二进制千字节,1,024 字节 | 二进制,无歧义 |
| Mb / Mbps | 兆比特 / 兆比特每秒 | 网络速度 |
| MB / MB/s | 兆字节 / 兆字节每秒 | 文件大小和下载软件 |
两个简单的检查方法能覆盖大多数实际情况。带小写 b 的数值,比同一数字带大写 B 小 8 倍。如果数字很关键,比如硬盘容量或传输时间估算,比较之前先确认它是十进制还是二进制。字节每秒转 Mbps 换算器把两类单位并排列出。
要点
- 1 字节等于 8 比特。小写 b 表示比特,大写 B 表示字节。
- 网络以比特每秒计速;文件、内存和硬盘以字节计量。
- kB、MB、GB 是 1,000 的幂;KiB、MiB、GiB 是 1,024 的幂,到 GB 这一级相差 7.4%。
- 在按二进制计算的软件里,1 TB 硬盘显示约 931“GB”,容量并没有缺失。
常见问题
为什么 1 字节是 8 比特?
8 个比特能表示 256 种取值,足够表示一个文本字符,而 2 的幂也适合计算机硬件。8 比特字节几十年前就成为主流,如今已经通用。
1 KB 是 1,000 还是 1,024 字节?
按照 SI 和 IEC 的规定,1 kB 是 1,000 字节,1 KiB 是 1,024 字节。有些软件仍然用“KB”表示 1,024 字节,所以要看清程序指的是哪一个。