数据如何变成数字

计算机底层电路最容易稳定识别的状态只有两种:高电平或低电平、通电或断电。所以在计算机里,所有信息最终都用 0 和 1 来表示。

位(bit)与字节(Byte)

  • 位(bit,小写 b):最小的数据单位,1 个 bit 只能存一个 0 或 1。
  • 每多 1 个 bit,能表示的状态数就翻一倍:$n$ 个 bit 能表示 $2^n$ 种状态。
  • 字节(Byte,大写 B):计算机平时按 8 个 bit 一组来读写,这 8 位就叫 1 个字节:

$$ 1 \text{ Byte} = 8 \text{ bits} $$

1 个字节有 $2^8 = 256$ 种组合,如果用来表示非负整数,范围正好是 0 到 255。

四个字节有多少位

练习

一份数据占 4 个字节,每个字节为 8 位。它总共有多少位?只提交整数。

提交答案

题解 Hint

二进制与十六进制

十进制里,213 表示 $2 \times 100 + 1 \times 10 + 3 \times 1$。二进制也是同样的道理,只是满二进一,从右往左每一位的权重依次是 $1, 2, 4, 8, 16, 32, 64, 128$。比如一个字节 00101101:

位权      128   64   32   16    8    4    2    1
二进制      0    0    1    0    1    1    0    1

计算:     32 + 8 + 4 + 1 = 45

把数字为 1 的那几位加起来($32 + 8 + 4 + 1 = 45$),对应的十进制就是 45。

因为一长串 0 和 1 实在太难看清了,平时看内存地址、网络数据包或文件头时,一般都把二进制缩写成十六进制(Hex)。十六进制用 0–9 加 A–F(代表 10–15)共 16 个字符。因为 $2^4 = 16$,每 4 个二进制位刚好缩成 1 个十六进制字符:

  • 左半边 0010 是 2,写成 2;
  • 右半边 1101 是 13,写成 D;
  • 所以一个字节 00101101 写成十六进制就是 2D(常加上 0x 前缀写作 0x2D,表示这是十六进制)。1 个字节永远对应 2 位十六进制字符(0x00 到 0xFF)。

同一个字节分别写为二进制 00101101、十六进制 2D 和十进制 45

网速与容量单位换算

查看文件大小、网速和硬盘容量时,需要注意两个常见的单位换算问题:

  1. 大写 B 与小写 b 相差 8 倍:
    • 文件大小与存储容量使用大写 B(Byte,字节),例如 500 MB 的视频文件;
    • 网络带宽使用小写 b(bit,比特/位),例如 800 Mbps 的宽带。由于 1 字节等于 8 位,换算为下载速度时需要除以 8,即理论最高下载速度为 $800 \div 8 = 100 \text{ MB/s}$。
  2. 十进制容量与二进制容量的差异:
    • 硬盘厂商按 1000 进位标注容量($1 \text{ GB} = 1000^3$ 字节),而 Windows 系统按 1024 进位统计容量($1 \text{ GiB} = 1024^3$ 字节):
十进制单位(厂商标称)字节数($10^n$)二进制单位(系统统计)字节数($2^n$)
1 kB1,000 Byte1 KiB1,024 Byte
1 MB1,000,000 Byte1 MiB1,048,576 Byte
1 GB1,000,000,000 Byte1 GiB1,073,741,824 Byte

因此,一块标称 512 GB 的硬盘在 Windows 中显示约为 476.8 GB,这是因为进位换算方式不同。