当我们看到 kb 或 mb 时,我们如何确定大小是基于 1000 还是 1024
Posted
技术标签:
【中文标题】当我们看到 kb 或 mb 时,我们如何确定大小是基于 1000 还是 1024【英文标题】:How do we determine whether a size is base on 1000 or 1024 when we see kb or mb 【发布时间】:2013-07-26 04:28:39 【问题描述】:Linux 中有许多程序会显示文件的大小,其中一些以块为单位显示,一些以字节为单位。但是当涉及到一些人类可读的形式时,比如 ls -sh、lvs、dd bs=size 等等,当我们看到 kb、KB、mB、MB、K 时,我们如何确定它是 1024 还是 1000 的倍数, G 等。有些用 lvs 之类的大写来区分它们,有些用 dd 之类的不同字符来区分,但是,这些东西有没有一般规则,因为我到目前为止找不到。 谢谢。
【问题讨论】:
99% 的时间是 1024,因为这是大多数计算机科学家使用的。但是,如果您想确定,请阅读相关程序的文档,没有办法先验。 【参考方案1】:如果您查看man units,您会看到对这两种单位的描述。十进制和二进制。千字节 (KB) 和兆字节 (MB) 等十进制单位是 1000 (10^3) 的倍数,而千字节 (KiB) 和兆字节 (MiB) 等二进制单位是 1024 (2^10) 的倍数。
如果显示的单位包含 KiB、MiB、GiB 之类的二进制前缀,则可以确定它是 1024。对于不清楚的单位,一般的经验法则:
硬盘驱动器尺寸以十进制单位进行宣传,因为制造商喜欢让它们看起来更大。因此,存储在磁盘上并通过网络传输的文件大小通常与此一致。 内存大小以二进制单位公布 任何与数据无关的内容(以 KHz 为单位的频率等)始终为十进制Ubuntu published a policy in 2010 的单位在 Linux 发行版中似乎相当一致,但不能保证:
将 base-10 用于:
网络带宽(例如,6 Mbit/s 或 50 kB/s) 磁盘大小(例如,500 GB 硬盘或 4.7 GB DVD)将 base-2 用于:
RAM 大小(例如,2 GiB RAM)对于文件大小,有两种可能性:
同时显示 base-10 和 base-2(按此顺序)。一个示例是 Linux 内核:“2930277168 512 字节硬件扇区:(1.50 TB/1.36 TiB)” 仅显示 base-10,或让用户有机会在 base-10 和 base-2 之间做出选择(默认必须为 base-10)。11 正如Kris Avi 在评论中指出的那样,在此政策之前开发的一些命令行工具可能仅使用 base-2 值但表示十进制单位,并且可能没有更改以避免破坏现有的解析脚本。
【讨论】:
我知道距离最初的答案已经很长时间了,但我个人认为 Ubuntu 政策在文件大小方面有误,或者至少将其默认为 base-10。有很多应用程序使用旧的 Windows 格式。我认为更有效的方法是修复演示文稿,但现在似乎更加混乱。至于命令行工具,大多数使用旧格式,当时由于某种原因并不那么令人困惑,但现在要感谢 Ubuntu 对 GUI 应用程序的政策。可能是因为它们来自政策制定前的时间,并且使用了错误的符号 base-2。以上是关于当我们看到 kb 或 mb 时,我们如何确定大小是基于 1000 还是 1024的主要内容,如果未能解决你的问题,请参考以下文章