Erdong’ Blog

苦练七十二变,笑对八十一难。

0%

计算机中遇到的单位该怎么换算

在计算机行业经常进行单位换算,这些单位到底该怎么换算,通过本文来说明一下。

** bit **

bit 是字长,意思是一个字所包含二进制输的位数,一个 bit 存放一位二进制数,即 0 或 1,最小的存储单位,简写为 b 。字长越长,运算速度越快,计算精度越高

** byte **

byte 是字节,计算机中处理信息的最小单位,以八位二进制信息,简写为 B 。

byte 和 bit 之间的换算是 8 ,原因是一个字节需要 8个字长

1
2
3
4
5
1 byte = 8 bit

或者

1 B = 8 b

** K M G T P E 是什么**

K M G T P E 等是国际单位制(SI)中所规定的词头(prefix)。词头加在SI单位(非SI单位也可以使用并通常遵循此用法)之前表示10的整数幂次,譬如k表示10^3=1000,M表示10^6=1,000,000,G则表示10^9=1,000,000,000.

举些例子,1kg=1000g,1km=1000m, 都是大家所熟悉的用法 。

那我们接下来看这些单位怎么换算。

CPU 主频单位换算

在计算机的使用过程中,我们会经常用到 CPU 的主频,那么主频是怎么换算呢?

所谓CPU的主频,就是说这块CPU的工作频率,也就是说这块CPU是在以哪个频率在进行运算处理。CPU的工作频率单位是以Hz(赫)计量,随着科技发展,CPU的制造工艺越来越先进,其主频也得到大幅度提升。现今,虽然CPU主频的计量单位Hz(赫)没变,但我们往往都会在单位前面加上M,甚至G,也就是我们常说的主频MHz(兆赫)和GHz(吉赫)。

1
1 GHz = 1000 MHz

对于 CPU 来说,除了主频以外还有更重要的一个参数叫做浮点性能,有单精度和双精度,个别情况下会用到半精度,他们的单位是 FLOPS,那么浮点性能的单位怎么换算呢?

1
1 TFLOPS = 1000 GFLOPS

相邻两个单位之间的进制 1000 。

速率单位换算

我们在下载文件或者拷贝数据时经常用到一个单位 Mbps 来描述数据拷贝的快慢或者网络带宽的大小,这个 Mbps 的意思是 Mb 每秒,及在一秒内可以传输的数据量为多少 Mb ,p 的 per 的简写。

我们在一些提供下载功能的软件里经常可以看到下载是数据是 MB/s ,那么这个单位和上边的 Mbps 有什么区别呢?

区别有两点

  • 表示方法不统一。也就是说,二者同样的表示方式应该是 Mbps 和 MBps 或者 Mb/s 和 MB/s 。
  • b 和 B 的区别。这个我们在最开始的时候说过了,一个是字节一个是字长。

那么他们应该这么换算呢?

1
2
3
4
1 MB/s = 8Mb/s

1 GB/s = 1024MB/s = 8192 Mb/s
1 Gb/s = 1024Gb/s

这样就清楚了,我们一般口头说的网络带宽的单位一般是 Mb/s , 下载文件和拷贝文件的单位一般是 MB/s , 下次我们就可以自己换算一下了。

存储单位换算

我们经常看到的存储单位有 KB、MB、GB、TB、PB 等,这些单位在计算机操作系统内的换算情况是这样的

1
2
3
4
5
1 PB = 1024 TB
1 TB = 1024 GB
1 GB = 1024 MB
1 MB = 1024 KB
1 KB = 1024 B

在硬盘厂商的宣传里是这样的

1
2
3
4
5
1 PB = 1000 TB
1 TB = 1000 GB
1 GB = 1000 MB
1 MB = 1000 KB
1 KB = 1000 B

造成这种差异的原因是,起先计算机的存储容量低到可怜,几千个 Byte 算是很奢侈的容量,由于计算机的二进制特性,这个容量通常是 2 的整数次幂,用起来不方便。IT工程师们发现 2^10=1024 与 k=10^3 接近,相差不过 2%。于是就有人偷懒以 1kB 表示 2^10B 也就是1024B,初看起来一切都好,2% 的差距并不大,时间长了大家也就接受了。

但问题在于,随着计算机的存储容量依摩尔定律(Moore’s Law)以指数增长,这个差值会越来越大。1kB与1KiB(稍后解释)相差不过2%,1MB 与 1MiB 相差近 5%,1GB 与 1GiB 相差7%,1TB 和 1TiB 足足差了10%。可以预见,随着硬盘容量的进一步扩大,这个差别会越来越大。

时至今日,在IT业中已经形成了这种混乱的局面,为了解决这个混乱的局面,还是有人做过努力。早在 1998 年 SI 手册中明确要求 SI 词头不应用于 2 的幂次。而同年国际电工委员会(IEC)推出了一套适用于2进制的词头,并且得到了 IEEE 的批准 (IEEE 1541)——不过这还是一个试用的标准。简单来说就是在 SI 词头后加”i”。比如说 K 就成了 Ki,M 成了 Mi,G 成了 Gi。发音把原来SI词头的第二个音节换成[bi]。譬如Ki念 [kibi],Mi念[mebi],Gi则是[Gibi]等等依此类推。这样,kMG 之类的的 SI 词头回复原来的含义,表示2幂次重任就交给了 Ki= 2^10=1024,Mi=2^20=1048576,Gi=2^30=1073741824 等等。这么一来,当表述一台电脑是3.15GHz CPU/2GiB内存/320GB硬盘时,G/Gi的含义就不存在歧义。

很简明易懂的解决方案,然而很不幸似乎买 IEC 帐的着实不多,目前支持IEC词头的软件屈指可数。更糟糕的是 1G=1024M 这种约定俗成的错误观念已经根深蒂固。

进制的选择依据

看了上边各项单位的换算,不知道大家有没有发现什么规律。

在计算机里相邻两个单位之间的换算有 1000 和 1024 ,那么什么时候是1000,什么时候是 1024 ?

其实,一般的换算按照国际单位制(SI) 的规定,相邻两个单位之间的换算是 1000 。

那么什么时候用 1024 呢?

那就是单位里含有 byte 或者 bit 的时候,用 1024 来进行换算。其实按照 IEC 的规定,使用 Mi 和 M 进行区分就不会有这样的歧义和疑惑了。

======================
Erdong, A Linux user !

坚持原创技术分享, 您的支持将鼓励我继续创作!