说实话这几个单位很多人会弄混,先放上直观的对应表:
1KB = 1,000 Byte
1MB = 1,000 KB
1GB = 1,000,000 KB
1TB = 1,000,000,000 KB
1KiB = 1,024Byte
1MiB = 1,024KiB
1GiB = 1,024MiB = 1,048,576 KiB
1TiB = 1,024GiB = 1,073,741,824 KiB
其中,KiB是 ki lo bi nary byte 的缩写,指的是千位 二进制 字节
而KB是 kilobyte 的缩写,指的是千字节
二者的区别就在于当中的 二进制 。我想说道这里大部分人应该都明白为啥KiB是按照1024换算的了。还记得那个笑话么,A问程序员B借钱:
A:B,借我点钱吧!
B:多少?
A:1000行不?
B:凑个整,给你1024吧!
再说深入一点,这其中其实牵扯了两种标准:
国际单位制 SI 制定的十进制标准和 国际电工委员会 制定的二进制标准,也就是通常所说的SI和IEC标准。
=============================================================
看了匿名用户的回复,决定来补充一些东西。//话说这种问题为啥要匿名呀摔!
首先1KB=1000B绝对不是硬盘厂商发明的,他们只是利用者,嗯嗯。
然后,关于大B和小b,匿名用户解释的非常好。顺便一说为啥网络传输要使用小b,因为在网络传输的时候,我们传输的实际上是一个个二进制数,似乎可以俗称为比特流。那么,在传输二进制数的时候,我们显然是不管你这是什么字,用的什么编码的,所以我们衡量传输速度的最直接的量就是每秒钟传输了多少了二进制位,所以在计算机网络中,我们普遍使用小b作为单位。
然后对于ta提出的Windows的Size的问题,这个很好解释。
首先,第一个Size显然是经过舎入的。请不要用115去做乘法,直接用118774去除1024就能得到结果:115.990234375。关于舍入究竟是什么规则,我还在寻找相关的文档,就目前来看似乎是直接舍去小数部分。
然后,第二个Size on Disk就更好解释了。如果你用118784除1024会发现诶,正好整除!结果就是116!这是为啥呢?显然这跟文件在磁盘上存储的最小单位有关。在NTFS分区上,文件存储的最小区块是簇,一般情况下默认的簇大小为4K,也就是说,不论你的文件有多小,就算你的文件只有1b,对不起,我还是要占用一个4K大小的簇。仔细一算你是不是发现116/4刚好整除,等于29呢?说明你的系统很可能也是4K为一个簇,然后该文件占用了你29个簇。
参考[知識] KB KiB MB MiB GB GiB TB TiB 單位傻傻分不清楚?
千字节Kibibyte