答案1:
说实话这几个单位很多人会弄混,先放上直观的对应表:
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是kilo binary 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 單位傻傻分不清楚?
答案2:
KB, MB, GB中的K, M, G代表字节的数量,自己也常混淆,总结如下:
- K单独出现时,代表1000 或 1024
- K与Ki一起出现时,K代表1000,Ki代表1024
- K与k一起出现时,K代表1024,k代表1000
K和Ki为例:
1K=10^3
1M=10^3K=10^6
1G=10^3M=10^9
Ki=2^10
Mi=2^10Ki=2^20
Gi=2^10Mi=2^30
答案3:
首先纠正一个错误。
1MB(MBytes)=1024KB(KBytes)
这个是教科书上的定义。谁告诉你1MB=1000KB的?这个答案恐怕会让你不及格吧?基础课上不会这么讲,原理上也绝对不会这么解释。其潜在意义仍然是“2多少次幂”。
再来解释如下规定(部分引用上面同学的材料):
1999年,国际电工委员会(IEC)公布了修正2:“IEC 60027-2:电工技术应用的字母符号 — 第二部分:通信和电子。”这个标准,在1998年通过,介绍了词头“kibi-”、“mebi-”、“gibi-”、“tebi-”、“pebi-”、“exbi-”,作为二进制乘幂的计数方法。
要读懂这段规定。其内涵是定义了符号的规范用法。Mi、Ki、Gi代表的是二进制乘幂的计数方法。
反过来讲,就是规范了一个标准,只要出现上述标志的,意味着这种使用是规范的。而我们日常使用的MB、KB等用法存在着很多歧义。这种硬性规定是出于学术上的考虑的。在实际使用中,MB的意义和MiB应该是等同的。
MB这样的用法并不一定意味着10多少次幂,这种理解本身就是错误的。
答案4:
学计算机网络时,谢希仁的书是这样说的