我注意到不同的应用程序使用不同的单位,或用它们来表示不同的事物。
例如,我遇到过,,,kB
和。这些单元分别代表多少字节?KB
KiB
Kb
K
如果这些单位有不同的定义,那么哪些应用程序使用哪些定义?
答案1
介绍:
电子计算机中的数据以各种方式存储和传输,但它们始终被解释为二进制值序列,要么是 0,要么是 1。一个二进制值称为一个位。八个位称为一个八位字节或一个字节。对此,人们达成了共识。
位表示为b
,字节表示为B
。对此大家有共识,如果您发现应用程序违反了这一惯例,那肯定是一个错误或故障。人们经常混淆这两者,但应用程序开发人员和制造商总体上不会混淆。
一旦进入更大的单位,就会出现两种思想流派,不幸的是,这意味着没有共识。不同的操作系统和不同的应用程序属于一种或另一种思想流派。
Ubuntu 的单位政策:
Ubuntu 已发布单位政策,其定义单位如下。
第一组单位是 1024 的倍数。(为什么是 1024?因为 1024 是 2 的 10 次方,这可以让程序员的工作更轻松。)这组单位称为二进制单位或 IEC 前缀,以IEC 标准定义了它们:
- 一千字节:
1KiB
= 1024 字节(注意大写 K) - 一兆字节:
1MiB
=1024KiB
= 1048576 字节 - 一吉字节:
1GiB
=1024MiB
=1048576KiB
= 1073741824 字节
第二组单位是 1000 的倍数。这与国际单位制中常用的单位(如米、升和克)更为接近。一千克等于 1000 克;同样,一千字节等于 1000 字节。这组单位称为十进制单位或国际单位制前缀。
- 一千字节:
1kB
= 1000 字节(注意小写的 k) - 一兆字节:
1MB
=1000kB
= 1000000 字节 - 一千兆字节:
1GB
=1000MB
=1000000kB
= 1000000000 字节
传统单位:
传统上,许多应用程序、操作系统和开发人员使用二进制单位,并赋予它们 SI 名称。Ubuntu、GNOME 和 OS X 都试图遵循已发布的标准(如前所述),但是,Microsoft Windows 和许多 UNIX 实用程序仍然使用这些传统单位,因此您需要了解它们。
- 一千字节:
1KB
= 1024 字节(注意大写 K) - 一兆字节:
1MB
=1024KB
= 1048576 字节 - 一千兆字节:
1GB
=1024MB
=1048576KB
= 1073741824 字节
然而,传统上,速度以每秒位数来指定,带有 SI 前缀!因此,即使在 Microsoft Windows 上,1Mbps 实际上是每秒 1000000 位数,也就是每秒 125000 字节。
如何避免歧义:
正如您所见,这些相互矛盾的定义导致了很多混乱。当我说 时1MB
,我的意思是一百万字节,还是 1048576 字节?
为了避免歧义,您应该使用以下策略之一:
- 仅使用 IEC 前缀。
1MiB
始终无歧义。 - 包括转换为字节数。例如:1MB 或 1000000 字节
- 同时使用 IEC 和 SI 前缀,例如:1MiB 或 1.048MB 左右。我更喜欢这个解决方案,因为它可以清楚地表达您的意思,读者也不必进行任何心算。
对于存在歧义的地方,这里有一套对我很有用的经验法则:
- 如果您发现
KB
(大写 K),那么可能正在使用传统单位。 - 如果您发现
kB
(小写 k),那么可能正在使用 SI 单位。 - 如果数字描述速度,那么可能使用十进制单位。
- 如果数字出现在 OS X、现代 Ubuntu 或 GNOME 应用程序上,则可能使用十进制单位。
- 如果数字位于硬盘或其他计算设备上,则可能使用十进制单位。
- 如果该数字来自 Linux 上的命令行实用程序,那么可能正在使用传统的二进制单位。
- 如果数字来自 Microsoft Windows 应用程序,那么可能正在使用传统的二进制单位。
说到 Ubuntu 应用程序,请看此列表指定哪些应用程序使用哪个系统。