很多人买电脑后,发现原本标配256G的硬盘,电脑显示只有238G,足足“缩水”了18G的储存空间。每当遇到这种情况,一些网友就会认为这是商家虚标,顿生郁闷。
但事实真是这样吗?并不是。
因为储存空间“缩水”类似现象并非只发生在你刚刚买来的电脑上,也发生在你将手机里的一个文件传输到你的电脑上时,更可能发生在两种不同系统的电脑间传文件时……
下面,笔者就做一个小实验,将手机里的一个视频传到电脑上,看看其大小会有怎样的变化。
图为笔者要上传的一个视频。(来源:作者自制)
该视频在手机文件里显示的大小为28MB,也就是28兆。(来源:作者自制)
下面,我们来看看这个视频在电脑上显示的大小,如下:
如上图显示,一个在手机里显示为28兆的视频,上传Windows电脑后,其显示只有26.6MB,即26.6兆。(来源:作者自制)
手机里显示是28兆,这是因为手机系统的“十进制”,而上传到Windows电脑后,电脑是以“二进制”来统计视频的大小,因而也就有了差别。
使用二进制的原因
核心原因是,计算机在计算和存储时,主要处理的是二进制数据。这就导致计算机存储器的容量通常是一些大幂的倍数,例如:
一个内存条,其内存容量为268435456 字节。
“268435456”这个数字使用的是“十进制”,看上去极为复杂。但如果使用2的幂来表示就十分简洁了,如下:
=268435456
极为简洁,其在二进制算法中, 字节就等于256兆。
而在十进制算法中,268435456字节等于268.435456兆。
说到这里,有网友可能会产生疑问:2的幂跟二进制有什么关系呢?关系如下:
图片来自作者自制。
请仔细看,对于二进制来说,2的幂极为有规律,规律就是:
指数是多少,二进制中“1”后面就跟多少个“0”。
例如:
2的0次方,二进制中,1后面就没有“0”。
2的10次方,二进制中,1后面就跟10个“0”。
同理可知:
2的128次方,二进制中,1后面就跟128个“0”。
……
不难发现,2的幂表现出来的这种规律,是不是就跟“十进制”中,10的幂表现出来的规律是一样一样的?没错。
图片来自作者自制。
以上两个表格说明了,在二进制中,2的幂,它类似于十进制中,10的幂。
图片来自作者自制。
继续观察2的幂所对应的“十进制”数字,大家应该就能明白了,为什么电脑内存常常是4G、8G、16G等等,而很少出现10G内存或者15G内存。
从十进制的角度看,显然10比8好,15比16好。
还有,硬盘空间,比如你的手机存储容量,也常常是64G、128G、256G。奇怪了,为什么就不能是50G、100G和150G?
现在,你应该知道答案了。前者恰好对应了2的幂。
两者的区别
对于计算机来说,使用2的幂来衡量存储空间的大小是最合适的。
然而,计算机又是为人类服务的,而人类恰好10根手指,使用十进制最舒服。使用其他进制简直就是货真价实的“反人类”,十分的不好口算。
1G等于1000兆,17G就是1.7万兆。这多好口算,对吧。
但如果使用二进制,你真的能瞬间算出17G就是等于1.7408万兆吗?
最后,硬盘厂商如果使用十进制来标注硬盘大小的话,硬盘会显得大一些,也更方便一些。因此,市面上的很多硬盘,他们的大小计量方式,大都是按照“十进制”来的。
目前,衡量存储空间或计量文件的大小仍比较混乱,因为两种进制都在用。为了不乱,1999年,国际电工委员会(IEC)公布了一些标准:
主要内容就是,信息大小的计量单位,十进制中没变,如下:
千字节,简写为kB,英文全称kilobyte。
兆字节,简写为MB,英文全称megabyte。
吉字节,简写为GB,英文全称gigabyte。
太字节,简写为TB,英文全称terabyte。
拍字节,简写为PB,英文全称petabyte。
……
而如果使用二进制计量信息大小时,是这样的:
千字节,简写为kiB,英文全称kibibyte。
兆字节,简写为MiB,英文全称mebibyte。
吉字节,简写为GiB,英文全称gibibyte。
太字节,简写为TiB,英文全称tebibyte。
拍字节,简写为PiB,英文全称pebibyte。
……
如果你以后在论文中看到类似PiB,或者pebibyte这样的表述时,那就可以说明,论文作者是使用二进制方式来计量信息容量的大小。
很多人说:1G不是等于1000兆,而是等于1024兆。那么现在,我们再来看看这个疑问应该怎么解答呢?
显然,正确答案应该是:在10进制中,1GB就是等于1000MB(即1G等于1000兆),这没有错。
图片来自《nature》上的论文截图。
举个例子,最近火出圈的超级光盘,在讨论其内容的研究论文中,可以看到,作者使用的不是pebibit或pebibyte,并非二进制算法。而作者使用的是petabit,是十进制算法。因此,这里的1G应为1000兆,而非1024兆。
综上,1G既可以是1000兆,也可以是1024兆。关键看是十进制还是二进制。在十进制中,1GB=1000MB,即1G等于1000兆;而在二进制中,1GiB=1024MiB,即1G等于1024兆。
由于很多人,甚至是一些大公司,由于历史原因,他们不习惯于使用诸如“GiB” “MiB”等这样的标准单位,而是直接简写为“GB”和“MB”,然后就引发了更多的混乱,继而导致无数人以为1GB就是等于1024MB。
换句话说,“混乱”本来是可以不存在的,但由于历史原因,单位简写习惯的原因,以及二进制和十进制中的1000兆和1024兆两者大小接近,容易被忽略的原因,这才导致了混乱。
下面一起来看看,我们以字节,也就是“B”为基础单位,使用“十进制”和“二进制”时,两者的容量差别,如下:
图片来自作者自制。
从上图可知,存储单位越大,两种计量方式的差别越大。这就是为什么,很多人买电脑后,发现硬盘容量“缩水”的原因。
图片自来作者自制。
微软的电脑系统是按照“二进制”来计量存储空间大小的,因此,一张手机照片上传到微软系统电脑后,照片在容量上会变小。
然而,需要注意的是,虽然微软电脑系统是使用“二进制”算法,但他们并没有使用诸如“GiB”或者“TiB”这样的标准单位。而是直接显示“GB”或者“TB”。
作者:寒木钓萌 科普作家、科技部“全国优秀科普作品奖”获得者
审核:兰名荥 北京邮电大学数字媒体与设计艺术学院副教授
出品:科普中国
监制:中国科学技术出版社有限公司、中科数创(北京)数字传媒有限公司