1TB硬盘为何只有931GB?一文讲透GB与GiB的区别与换算
2026/9/19 5:55:15 网站建设 项目流程

你是不是也遇到过这种情况:新买的移动硬盘,包装上清清楚楚印着“1TB”,插上电脑一看,可用空间只有 931GB 左右,瞬间觉得自己被商家坑了。又或者,你在下载系统镜像的时候,明明写的是 4.7GB,结果传了半天发现文件属性里显示“4.4GiB”,开始怀疑是不是下载工具出了问题。

别急,这两种“不一样”的背后,就是 GB 和 GiB 在“打架”。今天这篇内容,咱们就把这两个单位彻底讲透。我会从定义、历史、换算、应用场景到踩坑实录全部过一遍,争取让你看完之后,再也不会被容量数字绕晕。这篇文章适合所有跟数据存储打交道的人,无论是普通用户买硬盘,还是开发者在规划存储资源,都能从中获得可以直接用的判断方法。

1. 先抛结论:GB 和 GiB 到底差在哪?

一句话回答:GB 是十进制的单位,1GB = 1,000,000,000 字节;GiB 是二进制的单位,1GiB = 1,073,741,824 字节。这两个数字之间差了 73,741,824 字节,约等于 7.37% 的容量差距。

别小看这 7.37%,当容量达到 TB 级别时,这个差距会变得非常可观。一块 4TB 的硬盘,用 GB 标注和使用 GiB 标注,差了大概 295GB,这几乎是一块小固态硬盘的容量了。

1.1 单位定义的根本分歧:十进制与二进制

我们日常生活中使用的数字体系是十进制,逢十进一。国际单位制(SI)规定,kilo(千)、mega(兆)、giga(吉)这些前缀,分别代表 10^3、10^6、10^9。按照这个规则,1 千字节 = 1000 字节,1 兆字节 = 1000 千字节,1 吉字节 = 1000 兆字节。这是国际通用的标准,也是所有国际计量体系的基础。

但计算机的世界不太一样。计算机底层用的是二进制,逢二进一。在二进制体系下,2 的整数次幂是最“自然”的数字。1024 恰好是 2 的 10 次方(2^10),这个数字非常接近 1000,于是早期的计算机工程师们就约定俗成地用 1024 作为“千”的进位基数。这个习惯从硬件寄存器容量到内存寻址,一直延续下来。

问题就在这里:1000 和 1024 非常接近,在小容量时代根本感觉不到差异。一张 1.44MB 的软盘,不管用哪种算法,存储的文件数量都不会有明显差别。但当存储容量进入 GB、TB 时代,这个差异被不断放大,最终形成了今天这种“两个标准并行,谁都不服谁”的局面。

1.2 7.37%的“缩水”是怎么算出来的

我们来做一道很简单的数学题。

按照二进制算法(也就是 GiB 的标准):

  • 1GiB = 1024 MiB = 1024 × 1024 KiB = 1024 × 1024 × 1024 字节 = 1,073,741,824 字节

按照十进制算法(GB 的标准):

  • 1GB = 1000 MB = 1000 × 1000 KB = 1000 × 1000 × 1000 字节 = 1,000,000,000 字节

两者的比值:

  • 1,073,741,824 ÷ 1,000,000,000 ≈ 1.073741824

所以,1GiB 比 1GB 大了约 7.37%,反过来,1GB 约等于 0.931GiB。这就是 1TB 硬盘在系统里显示 931GB 的原因——硬盘厂商按 GB 标注容量(1TB = 1,000,000,000,000 字节),操作系统按 GiB 统计容量(显示为 931GB,实际上是 931GiB,只是系统把单位写成了 GB)。

注意:这里我说的“系统把单位写成了 GB”,正是混乱的根源。Windows 系统在显示磁盘容量时,虽然显示的单位是“GB”,但实际计算用的是 1024 进制,也就是说,系统显示的“GB”本质上是 GiB。这种“标注与实算不符”的做法,坑了无数普通用户。

2. 为什么会出现两套单位?一段绕不开的历史

要理解今天的混乱,必须回到几十年前的计算机发展史。这不是单纯的学术问题,而是一个关于行业习惯、标准组织和商业利益相互博弈的故事。

2.1 从国际单位制说起:SI的前缀规则

国际单位制(SI)是全世界通用的度量衡标准,规定了一套标准前缀:kilo、mega、giga、tera、peta……分别对应千、兆、吉、太、拍。这套前缀的底数永远是 1000,也就是 10 的幂。这是物理学家和工程师们所熟悉的世界,一米等于一千毫米,一千瓦等于一千瓦,没有任何歧义。

存储介质厂商天然倾向于使用国际单位制,因为这样可以跟其他物理量保持一致,在贸易和宣传中也有明确的法规依据。用 SI 标准来标注硬盘容量,从法理上没有毛病。而且,用 1000 作基数,数字看起来更大,营销上也更好看。这为后来的“容量之争”埋下了伏笔。

2.2 计算机行业为什么坚持用1024

计算机从诞生起就运行在二进制逻辑之上。内存寻址、寄存器设计、CPU 缓存容量,全都遵循 2 的幂次方。早期的存储设备容量很小,一张磁鼓可能只有几 KB 的容量,当时没人觉得用 1024 还是 1000 有什么大不了,于是“1KB = 1024B”的用法在计算机圈子里逐渐流行起来。

这种惯例最初只是工程师之间的默契,并没有任何权威机构背书。但习惯的力量是强大的,操作系统的开发者们沿用这套逻辑写代码,文件系统按 2 的幂划分块,内存按 2 的幂设计容量。等到后来有人意识到需要规范时,这套用法已经深入骨髓,改不动了。

2.3 GiB的诞生:标准组织终于出手

为了解决两套进制混用导致的混乱,国际电工委员会(IEC)在 1998 年专门制定了标准 IEC 60027-2,引入了二进制前缀:kibi、mebi、gibi、tebi……对应 KiB、MiB、GiB、TiB。其中“GiB”的全称是“Gibibyte”,代表 2^30 字节,也就是 1,073,741,824 字节。从此,理论上有了一个清晰的划分:GB 属于 SI 标准,GiB 属于 IEC 标准。

2005 年之后,Linux 内核、macOS 的很多底层工具、各类专业软件都开始逐步采用新标准。但问题在于,普通用户只认 GB 这个符号,很少有人知道 GiB 的存在。绝大多数操作系统界面为了“照顾”用户习惯,仍然用 GB 来标注容量,哪怕它内部计算的其实是 GiB。这就造成了今天这种“标准归标准、事实归事实”的分裂状态。

2.4 厂商和操作系统的“默契”:谁在故意混淆

聊到这里,你可能已经猜到,硬盘厂商用 GB 是“有理有据”的,因为 SI 标准确实合法。问题出在操作系统上。拿 Windows 来说,它显示“GB”时实际用的是 GiB 的数值,却不明确标注出来,直接把 500GB 硬盘显示成 465GB。macOS 在较新的版本中已经全面改用十进制显示(直接显示 500GB),但 Windows 至今仍然保留着旧的 1024 进制显示逻辑。

这种“错位”带来了一个现实结果:厂商没错,系统也没错,最终被误导的是用户。一个标着 1TB 的硬盘,插到 Windows 上只有 931GB,商家会告诉你“不同厂家换算方式不同”,然后你就乖乖接受了这个解释——但很少有人真正搞清楚,这个“换算方式不同”到底是什么。

3. 实战换算:怎么判断你手上的是 GB 还是 GiB

理解了原理,接下来是实操。很多场景下,你根本不需要知道完整的 1073741824 这种大数字,只需要掌握一个换算关系。

3.1 一个万能的换算公式

记住这两个常数就行:

  • GB 转 GiB:GB 数值 × 0.9313 ≈ GiB 数值
  • GiB 转 GB:GiB 数值 × 1.0737 ≈ GB 数值

举个例子。你买了一个标称 500GB 的固态硬盘:

  • 500 × 0.9313 = 465.65GiB,所以系统里显示 465GB 左右是完全正常的。

再比如,你在 Windows 上看到一个文件占用了 4.3GB 空间,那么它的真实十进制容量大约是:

  • 4.3 × 1.0737 ≈ 4.62GB,也就是说,如果按十进制标准(比如某些网盘上传时的统计口径)计算,它其实是 4.62GB。

实操建议:判断一款软件到底用的是哪种进制,有个简单粗暴的方法。看它显示的大容量文件的数值是否“很整齐”。如果 1TB 硬盘显示为 931GB 或 932GB,基本可以确定是二进制算法;如果显示为 999GB 或 1000GB,那就是十进制算法。

3.2 场景对照:硬盘、内存、文件、网络速度

不同场景下,GB 和 GiB 的使用习惯完全不同。搞清楚这些,你才能在不同的工具提示中不发生误判。

  • 硬盘容量:厂商标称一律用十进制 GB,Windows 显示的是二进制 GiB,但单位写成 GB。macOS 新版已经统一改用十进制,所以在 Mac 上买 1TB 硬盘,会看到显示为 1TB,不会“缩水”。这不是苹果良心发现,只是它换了一种显示逻辑。

  • 内存容量:内存是计算机中最典型的二进制容量,8GB 内存实际上是 8GiB 内存,也就是 8 × 1,073,741,824 字节。奇怪的是,内存厂商在标称中从不标注 GiB,而是直接写 GB。不过因为内存通常是整条出售,容量固定,大家也不太在意这个差异。

  • 文件大小:Windows 资源管理器用 GiB 显示,单位为“GB”;macOS Finder 用十进制 GB 显示;Linux 的 ls -lh 命令默认用 GiB 显示并标注清楚为“G”;很多终端工具也用 MiB/GiB 作为默认单位。这就导致同一个文件在三个系统里看到的“大小”不一样。

  • 网络速度:网络带宽是个容易混淆的领域,但这里的差异不是 GB/GiB,而是 bit 和 Byte 的区别。运营商说的 100M 宽带是 100Mbps,即每秒 100 兆比特,换算成字节是 12.5MB/s。这不属于 GB/GiB 的范畴,但由于同样是单位换算问题,经常被拉出来一起讨论。

3.3 标注容量与实际容量的对照表

我把常见的存储容量在二进制和十进制下的对应关系整理成一个表,你可以直接收藏备用。

标称容量(十进制)换算后的二进制容量系统常见显示容量差
1GB0.9313GiB0.93GB68.7MB
16GB14.90GiB14.9GB1.1GB
64GB59.60GiB59.6GB4.4GB
128GB119.2GiB119GB8.8GB
256GB238.4GiB238GB17.6GB
512GB476.9GiB476GB35.1GB
1TB931.3GiB931GB68.7GB
2TB1862.6GiB1.81TB137.4GB
4TB3725.3GiB3.63TB274.7GB

这个表不需要背,你只要记住那个 0.9313 的系数,所有容量都能快速估算。

3.4 一个小技巧:系统里怎么快速识别

如果你想知道当前系统到底用的是哪种进制,有个非常快的方法:在该系统里新建一个空文件夹,查看属性或信息。系统显示的容量信息通常只精确到个位,看不出来。更准确的方法是找一个已知十进制容量的文件(比如从网盘下载的标称 1GB 的文件),看系统统计出来的大小:

  • 如果显示为 1GB 或 1,000,000,000 字节,那么该系统用的是十进制。
  • 如果显示为 1GB(但精确字节数为 1,073,741,824),那么系统用的是二进制,只是显示成了 GB。

Linux 用户可以直接用ls -l看精确字节数,配合ls -lh看人类可读单位,两相对比,一目了然。

4. 必须搞清楚的3个真实场景

前面讲了很多理论和换算,这里聊点实际的。下面这几个场景,是我在这些年工作和生活中真实遇到过的,每一个都因为 GB/GiB 的问题消耗过额外的时间和精力。

4.1 备份和存储规划:别让容量差吃掉你的预算

我帮朋友做过一次家庭数据备份方案。他的原始数据加起来大约是 1.8TB(按文件实际字节数统计,通常是二进制),他打算买一块 2TB 移动硬盘来存。当时我劝他买 4TB 的,他不理解,觉得 2TB 装 1.8TB 明明够用。

问题就在这里。文件系统本身有元数据开销,硬盘实际可用容量大约是 1862GiB,而他的数据 1.8TB 是按二进制 GiB 统计的,两者相差不多,理论上确实够用。但一旦涉及备份的版本保留、哈希校验文件、文件系统格式化损耗,可用空间会进一步压缩。更重要的是,如果这些文件是按十进制的网盘统计口径同步下来的,实际二进制体积可能已经达到 1.93TiB,2TB 硬盘就非常紧张了。

规划存储时,建议至少留出 20% 的空余容量,并且统一用一种单位来核算,不要混着用。我个人的习惯是:所有涉及存储容量的讨论,一律用 GiB/TiB 来思考,也就是操作系统实际报告的数值。

4.2 软件开发和数据库:单位错了会出事故

写程序时,GB/GiB 混用可能导致非常难排查的问题。我见过一个监控脚本,报警阈值写的是 90GB,但系统 API 返回的磁盘总容量是 120,031,511,代码写的是 120GB,当系统报告已用容量为 88GiB(约等于 94.5GB 十进制)时,脚本并没有触发告警,但磁盘其实已经满了。这是因为脚本作者和系统 API 各用了一套进制。

数据库领域也有类似的坑。PostgreSQL 的pg_database_size()函数返回的是字节数,配套函数pg_size_pretty()默认用二进制单位显示。如果你按照 GB 去预分配表空间,很容易低估实际占用。解决办法是写个简单的换算函数,把所有容量都转成统一的字节数再比较,避免在应用层做进制转换。

注意:如果你在代码中需要处理容量单位,强烈建议以字节为唯一内部标准,只在展示层做格式化。任何中间环节的单位换算,都可能是 bug 的温床。

4.3 购买决策:商家标 GB,软件显示 GiB,该信谁

买硬盘、U盘、存储卡时,商家标的一律是十进制 GB。这不是欺诈,而是 SI 标准下的合法标注。你需要做的,是在购买前快速换算一下系统里实际可用的容量。

比如你考虑买一块 1TB 的 NVMe 固态,你需要知道的实际可用空间大约是 931GB。如果你的旧盘是 512GB(实际可用 476GB),确实翻倍了。但如果你从 1TB 升到 2TB,实际可用从 931GB 升到 1862GB,近一倍的增长,这个账算清楚,才能避免“买完发现没大多少”的错觉。

另外,云服务商的容量计费也有讲究。对象存储、云硬盘这类产品,很多按“GB/月”计费,但这个 GB 到底是十进制还是二进制,各家并不完全一致。大多数云厂商在账单中使用十进制 GB,而操作系统的监控图表可能用二进制 GiB。月度账单对不上监控数据时,先查单位,再查用量。

5. 常见误区与问题排查实录

最后这部分,我整理了一些普遍存在的误区和排查经验,帮助你快速定位问题,避免在这些细节上反复折腾。

5.1 误区一:把 GB 和 GiB 当成同一个东西

最常见的误区,就是想当然地认为“反正只是差一点点”。在小容量时代,这可能无所谓,但在大容量存储普及的今天,7.37% 的差异足以带来实质影响。尤其是做视频剪辑、虚拟机镜像、容器镜像这类大文件传输时,按 GB 估算时间,实际用 GiB 传输,时间可能超出预期 7% 以上。

5.2 误区二:以为只有硬盘有“缩水”

不仅是硬盘,U盘、SD卡、移动固态硬盘、云存储配额、流量统计工具,凡是存储介质都可能涉及 GB/GiB 混用问题。另外,一些下载工具的“已下载大小”用的是二进制,但速度显示用的是十进制,导致下载速度和进度条对不上。这种体验上的混乱,底层都是同一个问题。

5.3 快速自查表:几行命令看清容量真相

这里给出几个最常用的命令,帮你快速确认系统里的真实容量状态。

在 Windows PowerShell 里,用精确字节数查看分区容量:

Get-Volume | Select-Object DriveLetter, Size, SizeRemaining

这条命令输出的 Size 值是字节,你可以直接除以 1GB(十进制)或 1GiB(二进制)来核对数字。

在 macOS 上,用磁盘工具或终端命令diskutil list也能看到精确的字节数:

diskutil info / | grep "Disk Size"

在 Linux 上,用df -B1查看精确字节数,用df -h查看人类可读版本:

df -B1 df -h

把系统显示的字节数和标称容量做个除法,就能确定厂商用的进制。逻辑很简单:标称 1TB 的硬盘,如果字节数约等于 1,000,000,000,000,说明厂商用的是十进制;如果字节数约等于 1,099,511,627,776,那说明它是二进制标注,比较少见。

5.4 那些和 GB 同名的“其他领域”——顺便说点题外话

搜索引擎上关于“GB”的热门词条,不只有存储容量。比如学术文献管理工具 Mendeley 的引用格式里有一个“GB/T 7714”国家标准,这里的 GB 是“国家标准”的拼音缩写,跟容量没有任何关系。再比如游戏《Garry’s Box》(简称 GB Pack)相关的资源包,里面的 GB 是游戏名字的缩写。工业铝型材领域的“GB 型材焊接库”则是指基于国家标准的型材库。这些都是“GB”在不同语境下的含义,跟存储单位的 GB/GiB 之争完全是两码事。

不过从这些五花八门的用法能看出一件事:GB 这个词本身在多领域的高频出现,恰恰是信息传播中“一词多义”普遍存在的写照。在技术交流中,遇到 GB 先确认一下上下文,可以省掉很多不必要的误会。如果你是和存储相关的人员沟通,建议直接问清楚“你说的是 1000 进制的 GB,还是 1024 进制的 GiB”,对方大概率会心一笑,因为这是个真正懂行的人才问得出来的问题。

我自己后来养成了一个习惯:在写技术文档、方案和报告时,一律使用 GiB/MiB/KiB 来标注二进制容量,并在首次出现时注明换算关系。虽然初期同事会问“这是什么”,但解释清楚之后,团队里关于容量的沟通反而顺畅了很多。这个小习惯,算是从业这么多年来觉得最值得安利的一个经验。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询