比特(bit)是什么?
比特(bit)是二进制数字(binary digit)的缩写,也叫位,是计算机中最小的数据单位,只能取 0 或 1 两个值之一。从数字、文本到图片和程序,计算机存储和处理的所有信息都是一串串比特。
更新于 2026年9月24日
每增加一个比特,可表示的值就翻一倍。八个比特组成一个字节:256 个值,从 0 到 255。
电灯开关要么关、要么开。比特就是把同样的想法写成数字:0 或 1。一个比特只能回答一个“是或否”的问题,但把多个比特排在一起,每多一个比特,能组成的模式数量就翻一倍。八个比特就足以表示键盘上的任何字母,而几十亿个比特就能装下一部电影。
比特是如何存储的
只要是硬件能可靠地设置和读回的两种状态,都可以用来存储一个比特。不同的设备利用不同的物理效应:
- 处理器: 导线或晶体管处于高电压或低电压。
- 内存(RAM): 每个存储单元里有一个微小的电容,要么充了电,要么是空的。
- 机械硬盘: 盘片上的一小块区域朝一个方向或另一个方向磁化。
- 闪存(SSD、U 盘): 被困在存储单元中的电荷。现代闪存利用多个电荷等级,在一个单元里存储 3 或 4 个比特。
之所以用两种状态而不是十种,是因为即使信号有噪声,两种状态也很容易区分。电路只需判断电压是高还是低,而不必判断它最接近十个等级中的哪一个。
比特如何计数
比特用二进制计数,也就是以 2 为基数。每一位的权重是它右边一位的两倍:1、2、4、8、16,依此类推。比特 1101 表示 8 + 4 + 0 + 1,也就是 13。
n 个比特可以组成 2ⁿ 种不同的模式,所以每增加一个比特,范围就翻一倍:
1 bits -> 2 values
2 bits -> 4 values
4 bits -> 16 values
8 bits -> 256 values
16 bits -> 65,536 values
32 bits -> 4,294,967,296 values
64 bits -> 18,446,744,073,709,551,616 values
这些数字随处可见。用 8 位存储的颜色通道有 256 种深浅,所以 RGB 值的范围是 0 到 255。IPv4 地址是 32 位,因此总共大约有 43 亿个,IPv6 正是为此改用了 128 位。有符号 32 位整数的最大值是 2,147,483,647,在 Java 中给它加 1 会回绕成 -2,147,483,648。
Python 用 bin() 和 int() 在数字和比特之间转换,进制转换器也能在浏览器里完成同样的工作:
0b1101
13
4 bits needed
0b100
0b111
0b1001
0b1100
操作单个比特
上面示例后半部分用到的运算符就是位运算符。它们对每一位分别进行运算:&(与)只保留两个数都为 1 的位,|(或)保留任意一个数为 1 的位,^(异或)保留恰好一个数为 1 的位,<< 和 >> 则把所有位向左或向右移动。C、Java、JavaScript 和 Python 都使用相同的符号。
程序用它们把多个“是或否”的设置打包进一个数字,每个设置占一位。Unix 文件权限就是这样工作的:读、写和执行是三个比特,所以 7(二进制 111)表示三者都有,5(二进制 101)表示读和执行。这正是 chmod 755 所设置的内容。其中每一项设置都是一个布尔值,而一个布尔值只需要一个比特。
文本中的比特
文本以数字的形式存储,数字又以比特的形式存储。每个字符都有一个编码,这个编码用二进制表示:
H 72 01001000
i 105 01101001
! 33 00100001
这里每个字符占 8 个比特,也就是一个字节。ASCII 每个字符只需要 7 个比特,但计算机按整字节来存储。文本转二进制工具可以显示你输入的任何文本对应的比特。
日常数字中的比特
有两个常见的数字是按比特计算的。网速以每秒比特数来衡量:100 Mbps 的网络每秒传输 1 亿个比特,也就是每秒 12.5 兆字节,因为文件大小是以 8 比特一个的字节来计量的。Mbps 中的小写 b 表示比特,MB 中的大写 B 表示字节;字节页面对这两个单位做了完整的比较。
另一个是处理器和操作系统上的“64 位”标签。它表示处理器一步能处理的数字和内存地址的大小。
比特还能发现错误。奇偶校验位是在一组比特后额外加上的一位,让其中 1 的个数始终为偶数。如果传输途中有一个比特翻转了,1 的个数就会变成奇数,接收方就知道数据已经损坏。校验和把同样的思路扩展到了整个文件。
这个词的由来
“bit”是 binary digit(二进制数字)的缩写。Claude Shannon 在 1948 年的论文《通信的数学理论》中使用了这个词,并说明它出自 John Tukey。在 Shannon 的信息论里,一个比特也是一种度量单位:它表示一个有两种等可能结果的问题(比如抛一枚均匀的硬币)的答案所包含的信息量。
下一步学什么
比特几乎总是八个一组来处理,所以接下来可以读读字节是什么,那里也有比特和字节的对比。布尔值是什么展示了一个比特所表示的真或假如何驱动程序中的决策,校验和是什么则展示了比特如何发现损坏的数据。
常见问题
计算机中的比特是什么?
计算机中的一个比特就是一个 0 或 1,用两种物理状态之一来存储,比如电路中的高电压或低电压,或者存储单元是否带电。计算机里的一切,包括数字、文本、图片和程序,都由比特组成。八个比特组成一个字节。
为什么叫 bit?
bit 是 binary digit(二进制数字)的缩写。这个词归功于统计学家 John Tukey,最早见诸印刷是在 Claude Shannon 1948 年的论文《通信的数学理论》中,这篇论文奠定了信息论的基础。
美元里的 bit 是什么意思?
在旧时的美式用法里,一个 bit 等于八分之一美元,也就是 12.5 美分,所以“two bits”指的是 25 美分。这个说法源自可以切成八块的西班牙银元。它和计算机里表示二进制数字的比特毫无关系。
32 位和 64 位是什么意思?
它指处理器一步能处理多少位数据,以及内存地址用多少位表示。32 位地址最多能指向 2^32 个字节,也就是 4 GiB,所以 32 位系统无法直接使用超过这个数量的内存。如今的电脑和手机处理器都是 64 位的,这个上限远远超过了任何设备实际安装的内存。
比特和量子比特有什么区别?
比特永远恰好是 0 或 1。量子比特是量子计算机的基本单位,在被测量之前可以处于 0 和 1 的叠加态,测量后以一定的概率得到 0 或 1。量子比特用于特定的量子算法,不会取代普通计算机中的比特。