照片、声音、文字和视频,也能放在一起比大小吗?

文件大小的度量:比特(bit)与字节(byte)

第 14 期 · 2026-09-12 · 2026-10-11 修订

你在纸上写下自己的名字,给它拍 1 张照片。再对着手机,把名字念出来。照片能看,录音能听,它们也能比大小吗?

拿尺子量,照片有长有宽,声音却连边都找不到。可你把它们存进电脑,打开文件的详细信息,两边居然都标着「大小」。

这个「大」,到底在量什么?

我们就从你的名字开始。写成拼音、换成汉字、拍成黑白照片、加上颜色,再录成声音、拍成视频,一路看看。

同一个名字,能留下多少数据?

先写拼音,名字里能数出什么?

先用「王守闯」做例子,你也可以换成自己的名字。它的拼音写成 wang shou chuang。先别数整行,挑开头的字母 w 看一眼。

在 ASCII 字母编号表里,小写 w 的编号是 119。把这个数写成二进制,就是 01110111。从左往右数,有 8 位,每位只能是 0 或 1。

这样的 1 位,叫 1 个比特,英文是 bit。 8 个比特放成一组,就是 1 个字节,英文是 byte。比特常简写成小写的 b,字节简写成大写的 B。大小写只差一点,1 字节却相当于 8 比特。

现在回到整行拼音。wang 4 个字母,shou 4 个,chuang 6 个,中间还有 2 个空格。在这份 UTF-8 文字记录里,每个字母占 1 个字节,空格也占 1 个字节,合起来是 16 字节。

空格看起来什么也没有,电脑却得记住:这里要隔开。

把这行拼音的二进制全部展开,就是下面这 128 个比特。每组 8 位是 1 字节,从左往右、从上往下读,1 位也没有省略。拼音中的 2 个空格也在里面,它们各写成 00100000。

01110111 01100001 01101110 01100111
00100000 01110011 01101000 01101111
01110101 00100000 01100011 01101000
01110101 01100001 01101110 01100111

组与组之间的间隔、显示时的换行,只是为了方便看,不计入这 16 字节。

换成 3 个汉字,会不会更占地方?

把拼音换成「王守闯」。这 3 个常用汉字用 UTF-8 保存,每个占 3 个字节。3 个字合起来,是 9 字节。

3 个汉字的完整二进制也能全部写下来。下面 3 行依次对应「王」「守」「闯」,每行 3 个字节,总共 72 个比特。

11100111 10001110 10001011
11100101 10101110 10001000
11101001 10010111 10101111

虽然这 3 个汉字各占 3 个字节,但这个名字的拼音要用 14 个字母和 2 个空格,所以汉字写法反而更小:9 字节,比 16 字节少。 换成你的名字,结果要重新数。

同一个名字的拼音占 16 字节,汉字占 9 字节;每格 1 个字节,字母 w 展开后为 8 个比特

图中数值由 2 种写法的实际 UTF-8 编码计算。只计文字,不含额外的文件标记和换行;不是比较电脑显示的「占用空间」。

你已经给这 2 份记录找到了同一把尺:字节。它不问名字怎么念,也不问字体漂不漂亮,只数保存了多少数据。

数据,就是这里用 0 和 1 表示并保存下来的记录。

名字拍成黑白照片,字节会跑到哪里去?

现在给纸上的名字拍 1 张黑白照片。眼睛看过去,还是那 3 个字;可照片记录的东西已经不一样了。

文字文件记的是字的编号。照片却要把整幅画面记下来:哪里是笔画,哪里是白纸,边缘有多灰,光照留下了什么影子。画面被分成一格格像素,每格都要留下记录。

为了逐格观察、把二进制全部摆出来,我们用这 3 个字做 1 张横着 48 格、竖着 16 格的字图。每个字占 16×16 格,只有纯黑和纯白,没有灰色。

王守闯的 48×16 纯黑白字图,灰框内包括所有黑色和白色像素

灰框标出整张图的边界。框内的白色位置也算像素,记为 0;边框在图片外,不计入这 48×16 个像素。

约定黑格写 1,白格写 0,从每行左边开始记,记完 1 行再往下 1 行。整张图的像素记录就在下面,没有省略任何 1 位:

000000000000000000000000000000000000000000000000 000000000000000000000001100000000000100000000000 000000000000000000000001100000000001101111111000 000111111111000000111111111111000000110000001000 000000010000000000100000001001000001011111001000 000000010000000000000000001000000001011001001000 000000010000000000111111111111000001010001001000 000111111111000000000000001000000001011111101000 000000010000000000001000001000000001000000101000 000000010000000000000100001000000001111110101000 000000010000000000000110001000000001000000101000 000000010000000000000000001000000001000000101000 001111111111100000000000001000000001000011101000 000000000000000000000000110000000001000000011000 000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000

每个数字占 1 个正方形格,和原图保持同样的宽高比例。1 写深一些,0 写浅一些,只是方便分辨;记录的仍然只有黑、白 2 种状态。完整二进制文本。

你可以找 1 行有长横的笔画,看看图上的黑格,能不能和一串连续的 1 对上。这里每个像素只要 1 个比特,48×16 一共 768 比特,每 8 位一组,就是 96 字节。

同样是「王守闯」,UTF-8 文字记录占 9 字节,这张小字图的像素记录占 96 字节。字图连空白的位置都要记录。这里列全的是像素的二进制,尺寸和黑白约定另行说明;它不是整个 PNG 图片文件的内容,文件还会有格式信息和压缩。

仍是这张字图,如果让笔画带上深浅不同的灰,每格 1 个比特就不够了:0 和 1 只能区分黑、白 2 种状态。

这次改用 1 个字节,也就是 8 个比特,记录每个像素的灰度。前面数二进制时见过,8 位能表示从 0 到 255 的 256 个数。用这些数记灰度,就能从纯黑到纯白,分出 256 个深浅等级。

仍是 768 个像素。纯黑白每格占 1 比特,共 768 比特 ÷ 8=96 字节;改成灰度后,每格占 1 字节,共 768×1=768 字节。格数没变,每格的记录变成了原来的 8 倍。

同一张照片有了颜色,还要记多少?

再给这张字图加上颜色。仍是这 768 个像素,这次要记录每格是什么颜色。

王守闯的彩色字图,横向48格、纵向16格,共768个像素格,与前面的黑白字图逐格对应

横着 48 格,竖着 16 格,仍然是 768 个像素。每个背景格的颜色都不同,名字统一用同一种深色。背景也占格子;细灰线只帮助数格,不计入像素数据。

一种常见的彩色记录方式,是每个像素分别用 1 个字节记红、1 个记绿、1 个记蓝。于是原来 1 个像素的 1 份记录,变成了 3 份。

按这种方式、不压缩地记颜色,像素数据就是 768×3=2,304 字节,是灰度记录的 3 倍。

手机拍的照片常常有更多像素,需要记录的数据也更多。你见过的 JPG、PNG,是保存图片的不同格式。格式规定数据怎样组织,实际文件还受记录方式和压缩影响;把文件名末尾的 .jpg 改成 .png,并不会真的把里面的数据换一种方式保存。

文字和字图看起来不同,大小却都能用字节比较。接下来,换成听得见的记录呢?

把名字念出来,声音也能用这把尺吗?

对着手机念 1 遍自己的名字。刚才图片的 1 个像素记颜色,声音的 1 次采样又记什么?

你念「王守闯」时,话筒所在位置的空气一会儿被挤紧,一会儿松开。话筒把这种压力变化变成电信号,机器每隔很短一会儿取一次值,按选好的刻度记成数字。这就是声音那一期讲过的办法:每次记下一个瞬间的变化,连续记许多次,再连同时间间隔一起保存,才能把声音留下来。 声音看不见摸不着,电脑怎么把它记下来?

图片的像素按位置排列,声音的这些数按时间排列。现在要数它们占多少地方,先定好记录方式:每个数固定用 16 个比特,也就是 2 个字节保存,先不压缩。

假设某次记下的数是 +2,就用这 16 位保存:

00000000 00000010

中间分开,只为看清 2 个字节。这个数是示意,不是「王守闯」录音的实测值。

这里是 1 个数,占 2 个字节。数值是 0,也照样占 2 个字节;正数、负数都按选定的规则保存在同样长的位置里。所以不用先知道你说名字时每个数是多少,只要知道一共记了多少个数,就能算出它们占多少字节。

这次只记 1 路声音,每秒采样 16,000 次,录 3 秒。每采样 1 次就记下 1 个数,可以这样往下数:

这一步在数什么 计算 得到什么
3 秒一共记下多少个数 每秒 16,000 个 × 3 秒 48,000 个数
这些数一共占多少字节 48,000 个 × 每个 2 字节 96,000 字节

录得更久、每秒记得更多,或每个数占更多字节,数据量都会增加。文件还要保存采样的时间间隔等信息,那些不在这 96,000 字节里;实际录音如果用了压缩,大小也会不同。

连画面一起拍,名字又变成了什么?

前面已经有了「王守闯」的彩色字图,也有了念出名字的录音。现在把它们合起来:让名字在画面里慢慢移动,同时响起你念名字的声音,就成了一段小视频。

视频里的每张画面,叫 1 帧。沿用刚才的彩色字图,每帧的画面记录占 2,304 字节。名字的位置可以变;格数和每格的记录方式不变,每帧的数据量就相同。

这段视频也做成 3 秒,和前面的录音一样长。假设每秒记 30 帧,3 秒就有 30×3=90 帧。先把每帧的像素记录完整保存,不压缩;声音也沿用刚才的记录方式,就可以分开算、再合起来:

视频里要保存什么 沿用前面哪一份记录 这部分有多大
3 秒的连续画面 每帧 2,304 字节,共 90 帧 2,304×90=207,360 字节
3 秒的声音 每秒记 16,000 个数,每个数占 2 字节 16,000×3×2=96,000 字节
画面和声音合起来 把这 2 部分相加 207,360+96,000=303,360 字节

你看,视频的数据量有了来处:一张张画面的记录,加上同一段时间里的声音记录。 播放时,画面和声音还要按时间对上;每秒显示多少帧、每秒读多少个声音的数,也需要保存。

这里的 303,360 字节,只数未压缩的画面和声音,没算时间安排等文件格式信息。实际视频常会利用相邻画面里的相似内容,压缩保存。

回头看,同样是「王守闯」,写成文字、画成字图、录成声音、拍成视频,保存的记录不同,却都能用字节数出来。

照片、声音、文字和视频,能放在一起比数据量。 这里比的不是谁声音响、谁画面宽,而是保存了多少数据。

换成你的名字,文件会有多大?

准备纸、笔、能拍照的手机和 1 台电脑,可以和家长一起试。先比较汉字和照片这 2 份记录:

  1. 在电脑的纯文本编辑器里输入自己的名字,用 UTF-8 保存,不加空格和换行。
  2. 在纸上写下同一个名字。
  3. 用手机拍下纸上的名字。
  4. 把原照片传到电脑,传输时保留原文件,避免聊天软件压缩。
  5. 查看这 2 个文件的大小。Windows 右键选「属性」,Mac 右键选「显示简介」,比较「大小」,不比「占用空间」。

文字文件打开后能读到名字,照片里也能认出同一个名字,就可以开始比较了。若文字大小不止几个字节,检查是不是保存成了带排版的文档,或多了换行、文件标记。真实照片的大小还会受像素数量和压缩影响,不一定等于字图算例。

你还可以把拼音、灰度照片、录音和视频加进来。录音和视频记下实际时长,不必刚好 3 秒。每多一份记录,先猜谁更大,再看文件的字节数。

同一个名字已经能留下这么多数据。那么,换成厚厚一部小说,存下来会不会比 1 首几分钟的歌还小?

署名:王叔叔