首页 >> 计算机科学 >> 文章

U盘普遍缩水啦?Comments>>

发表于 2012-01-07 06:00 | Tags 标签:, ,

流言: 【北京市面30种U盘容量均“缩水” 金士顿上黑榜】北京市消费者协会对市面销售的30种USB闪存盘产品进行了比较试验,结果表明,所有U盘内存容量均“缩水”,也就是实际容量和标称容量不符,其中相差最大的U盘,标称8GB,在电脑上显示只有7.44GB,仅为标称值的93%。[1][2]

真相: U盘包装上写明的容量与电脑显示出的容量值不相符,是否一定说明U盘制造商偷工减料,弄虚作假,欺骗消费者了呢?其实问题出在了对于1GB这个单位有多大,业界存在两种不同的理解方式。

我们从国际通用的计量单位开始讲起。1毫米,1厘米,1米,1千米这样的描述,大家一定都很熟悉,它们之间的换算或者10倍,或者100倍,或者1000倍,都是十的倍数,也就是十进制。

如果用数字表示一百万米或者十亿米,普通青年会直接写1000000米/1000000000米,文艺青年或许会写成1,000,000米/1,000,000,000米,另一类青年则会这么写:1M米/1G米。

在国际单位制里,1k表示1000,1M表示1000k,也就是106,1G表示1000M,也就是109[3] 不过一般在表示长度的时候,用1M米,1G米的青年并不多。生活中使用M,G比较明显的例子是无线电波的频率,比如微波炉电磁波频率是2.45GHz,也就是2.45*109Hz。

按理说,国际单位制里M,G适用于各个领域,可以说1G米,1GHz,也可以说1G摄氏度,1G吨,1G伏电压等等,但是用G和M表示信息容量大小的时候,就出现了小小争议。

在电脑里,无论多眩的画面,多复杂的功能,多给力的软件,无论储存在硬盘、光碟还是U盘上,到最后都是分解成一大堆按顺序排列的数字0和数字1来储存。换句话说,这是个二进制的世界,其中单个0或者单个1称为一个bit,通常把8个bit合在一起,比如10011011,称为一个Byte。

U盘容量指的就是这个U盘可以储存多少个Byte。如果1MB就是106Byte,1GB就是109Byte,就什么问题也不会有了。但是在电脑世界里,2Byte,4Byte,8Byte,16Byte……1024Byte这样以2的次方数为“批量”处理Byte会方便一些,更整齐一些,于是就有了另一种定义,1GB=1024MB,1MB=1024KB,1kB=1024Byte,这样算来,1GB不是1,000,000,000 Bytes而是1024*1024*1024=1,073,741,824Bytes。[4]

1000和1024这两种换算方法各有各的道理,前者是遵循国际单位制,与其他单位接轨,后者对于计算机的运算更方便一些。为了避免混乱标注现象的延续,国际电工协会(IEC)在1999年拟定了"KiB"、“MiB”、“GiB”等一批新的二进制单位,专用来标示“1024进位”的数据大小[5]。而后,这一标注规范又于2008年并入国际标准化组织(ISO)文件,成为国际通行的标准——至此,GB与GiB的分野才开始明晰。[6]

由于计算机行业的迅速发展,标准的设立又较为滞后,大量已存的误标未被及时修改,成为了“历史遗留问题”。目前硬件制造商,包括U盘制造商使用的都是国际单位制的GB单位(1000换算的)来标示容量,但我们熟悉的Windows系统,就依旧以“GB”字样来表示“GiB”单位(1024换算的)。苹果电脑的OSX系统也曾存在这一问题,不过新的版本已经将容量单位修正为名副其实的国际单位制“GB”。在下图里,同一个硬盘在Mac OS X10.5操作系统里和Mac OS X10.6系统里显示的“大小”却不相同,原因正是10.5系统使用了GiB单位,10.6系统使用了GB单位。[7]


【同一个硬盘在Mac OS X10.5操作系统里和Mac OS X10.6系统里显示的“容量”,因为单位标准不同,数值也不相同。图片来自:pcedu.pconline.com.cn[5]】

同样道理,1个8G的U盘(GB单位),如果没有造假,在windows系统里显示的大小会是8000,000,000/1,073,741,824=7.45GiB,也就是在“我的电脑”里显示是“7.45GB”。这个"显示容量只是标称容量93%"的U盘其实是正常现象,并没有缩水。

结论:谣言粉碎。 这项调查忽视了硬件制造商和电脑操作系统之间使用的单位换算差异问题,误将正常的数值差异当成了U盘缩水。

修订说明:文章新补充了关于GiB标准的更多说明,感谢 @菊 提供的大力支持。

参考资料:
[1] 北京市面30种U盘容量均“缩水” 金士顿上黑榜
[2] 北京市消协:USB闪存盘生产企业普遍虚标容量,误导消费者
[3] wiki: International System of Units
[4] wiki: Gigabyte
[5] wiki: IEC 60025
[6] wiki: Binary prefix
[7] GB如何定义?苹果站到硬盘制造商一侧

原文发表于果壳网 谣言粉碎机主题站 U盘普遍缩水啦?

0
为您推荐

85 Responses to “U盘普遍缩水啦?”

  1. czar说道:

    原来如此,我以前还以为是U盘等存储设备的内部程序占了一部分空间呢。

  2. classic说道:

    虽然很早就知道这个,但是还是感到不爽。明明可以修改标准的,为啥硬盘的制造商非得按老标准来,500G的硬盘真正能用的只有465GB

    • 嘉德豉油公司说道:

      这个更多的属于软件方面的问题,毕竟单位进制的历史上1000比1024要远一些
      但这个其实就和ipv4跟ipv6的关系一样,当时众人自我感觉这能战50年
      别忘了“640 k ought to be enough for anyone”by bill gates in 1981。

  3. blovecob说道:

    其实U盘、硬盘制造商也打擦边球,劣币驱逐良币,殊途同归而已。
    而那个所谓的报道,则是百分之百的公关产品,专门抹黑金斯顿的。

  4. hunter说道:

    不管kb MB GB 如何定义,只要要求厂家按照字节标注就可以了。
    说白了就是1024和1000的关系,厂家按照1000标注,用户按照1024理解,自然就少了。

  5. caoliuer说道:

    1024

  6. 斜月三星说道:

    不同意此文观点。8G应该是8192M,在Windows上应该显示8G。

  7. allplay说道:

    处于逻辑与历史的一致,我是坚决站到硬盘厂商 KiloByte=1000的阵营。不仅硬盘储存如此,数据网络波特率也是KiloBit=1000,千位。
    这样做不仅符合国际标准,也符合历史惯例。

    “但是在电脑世界里,2Byte,4Byte,8Byte,16Byte……1024Byte这样以2的次方数为“批量”处理Byte会方便一些,更整齐一些”
    请问有谁把C盘的10GB 20GB真正划整齐了?

    二进制的计算和源于早期二进制集成二级管阵列的情况下,才叫计算简便。一个文本文档,1000字节,占用硬盘1000字节。

    真正搅了浑水、打擦边球的是二进制的人,2^10=1024,这里面跟“1000”没有任何关系,他们却借用了希腊词汇Kilo千,为了简便而给kilo赋予了一个为了近似的简便而造成混乱的含义kilo=1024。说得不好听,叫“盗用”。
    我自己在看早期集成电路制造的时候,深刻体会到了2^10=1024的方便,但是既然要立标准,就不能模棱两可。

    我很理解国际标准化组织和心理,坚决把1024踢出KB MB阵营,单立一套KiB MiB。

    • 天祭说道:

      你标1000GiB,别人标1TB,在装上去以前很多人不知道是一样大的,就都买他们认为是1024GB的,吃亏的是你

    • tasf说道:

      我的C盘就是50G,分区的时候给它5120M就可以了。分区的时候自己注意一下,按照1024M的整数倍分配,这样只有最后一个盘符容量比较乱。虽然我知道硬盘等存储器都是按1000来计算的,不过分区的时候还是工整一点比较好看。

    • vx13说道:

      我觉得那个什么 KiB 完全是硬盘厂商公关的结果。作为计算机工作者,我们平时用的单位都是以 2 的 n 次方作为标准的。
      就像买内存,谁敢用 1000 来算,而不用 1024 来算?还不被骂死啊?
      我用 C 编程的时候,变量都是按照 2 的 n 次方对齐的,这样存取效率高。
      还有硬盘的使用单位是盘块、簇这些东西,而它们都是 2 的 n 次方。按照 10 进制来计算的话,会有些空间浪费。记得以前的操作系统分区多数是默认以 4KiB 作为一个硬盘盘块的。就算你保存了 4000字节的文件,也要占 4096 字节的硬盘空间。

      • 石头说道:

        人类是10进制,10^n自然。计算机是二进制,2^n更自然。纠结的是,计算机中的数量要说给人听,所以很容易出现这种麻烦。

      • allplay说道:

        CPU频率、总线带宽、网络传输波特率都是十进制
        CPU说1GHz那就是1,000,000,000赫兹
        are you clear?

    • 超哥说道:

      有划分整齐的10gb20gb的,有专门的计算软件。。不过我觉得那是蛋痛

  8. allplay说道:

    斜月三星 说道:
    2012-01-07 12:34

    不同意此文观点。8G应该是8192M,在Windows上应该显示8G。
    ----
    可见,1024带来的混乱,连做科普的lz都算错。不是批评lz,很多人都容易错。

    • 路西法的挽歌说道:

      你们两个真心把我雷到了。。。LZ的算法木有错啊。。。
      计算结果如下:
      按照生产厂家的方法:
      8GB=8*1000*1000*1000=8,000,000,000B
      这是生产厂家的算法
      Windows系统算法进行换算:
      8,000,000,000B/1024/1024/1024=7.45GB
      你们两个算反了。。。。。。

      • beiang说道:

        童鞋你该写更清楚些给LS看:

        Windows系统算法进行换算:
        8,000,000,000B/1024/1024/1024=7.45GiB

        然后微软说”哎这多不好看啊我们把中间那个i去掉吧这样比较顺眼“

        于是……

  9. 冷云说道:

    我更想知道的是,为什么这两种计算方法那么多年都没有统一起来

    • DDD说道:

      因为这不是强制性的,而是自发的。
      最新的MAC OS /Ubuntu/Win8都开始采用正规的1000进制标注存储容量了,虽然实际容量还是那么大。。
      消协就错在只用Windows测试,而正好Windows的标注是错误。

  10. 具今日二〇一一年十二月二十八日,星期三说道:

    6y7ru64yu65u 6huhy5trhy5yeh画幅单反看女人哪丢货呀              

  11. 鑫鑫说道:

    这是个老问题了。有人告过U盘厂商,说为什么2G优盘容量不到,厂商的解释是2G是型号,而不是容量……早在软盘时代时候就有这种情况的,1.44M软盘,实际容量只有1.38M

  12. Pippo说道:

    不是这样的吧。主要是因为U盘里面使用的NAND Flash自身需要,需要一些容量预留做坏块替换,保存U盘内部控制器运行的代码,内部算法的需要等。。。

    • Wolf说道:

      所以很多U盘标注8G,实际容量却不到7.45G。就是换算标准不同再加上预留容量。但是看上去少掉的容量主要还是因为1000和1024的关系。

  13. seal说道:

    很早就知道,从不因此纠结~~~

  14. 一番说道:

    那卖方应该 避免这样的误解 (这其实很可能是一种营销策略)。卖的u盘的8G 小于大部分普通消费者的普遍认为的8g,与消费者的使用初衷不符,这本身不太合理。

    最好能呼吁卖方把因为两种单位造成的“误差” 在产品上标示出来。

  15. Ryan说道:

    内存怎么是正好的?

  16. ZHX说道:

    这篇文章纯属空对空,关键在于这样的差异是由硬件(磁盘)厂商人为造成的
    硬盘制造商已经因为这个容量的问题,被起诉过好多次了,败诉的也不是一次两次

  17. Keyman说道:

    我说……文艺青年不是应该用科学计数法表示一百万米或者十亿米么……

  18. [...] U盘普遍缩水啦? 流言: 【北京市面30种U盘容量均“缩水” 金士顿上黑榜】北京市消费者协会对市面销售的30种USB闪存盘产品进行了比较试验,结果表明,所有U盘内存容量均“缩水”,也就是实际容量和标称容量不符… [...]

  19. t说道:

    这伟大的楼主在辟谣之前能不能告诉我,为什么当年只有几十兆一百来兆的时候,那U盘的容量就可以没有误差?注意!不是误差小,是“没有”误差

    • 南宫潜水说道:

      同样有误差啊,只不过当年的进制少了一个1024所以感觉没有那么明显,128M的U盘格式化以后显示也是122M而已。

      • 南宫潜水说道:

        顺便说一下,在KB时代,两者误差约为97%,MB时代误差约为95%,GB时代约为93%,TB时代约为90%,这是很简单的算术问题。

    • allplay说道:

      当年的KB MB是是十进制二进制混用的,各说各有理。也可以说u盘商没错。

  20. lea.sy说道:

    我是来吐嘈普通青年文艺青年和“某类青年”的

  21. Zack说道:

    不是这样的吧? 8GB 就是实实在在用 1024为:1000进制:的那种容量。
    Windows 报告的容量是指格式化后的容量,文件系统需要很多额外的存储块来保留逻辑扇区等分区表,目录表的吧?

  22. wingo1说道:

    居然有人不知道这个

  23. 大型熊类说道:

    程序员甲:借我一千块
    程序员乙:拿去,1024元,给你凑个整

  24. tia说道:

    2叉啊……
    2为王道啊,没有用2来理解计算机怎么会对呢?

  25. 小松鼠说道:

    原来计算机很2,是因为它只会用2进制,

  26. 路人甲说道:

    虽然早就知道这事,但用进制换算来解释根本就不合理,如果标称8GB,那么计算机就不该显示7.45GB,因为这个单位就是按二进制来的,所以说厂家欺诈完全没错,除非厂家标为8GiB

  27. kyoiiyb说道:

    现在的存储中介也许确实有缩水的. 但实际上大部分都是超过了标称容量了.
    商家是按10进制来算那是必须的.. 因为产品是面向人的..
    如果非要改 那也是改操作系统..
    我觉得错在操作系统.. 因为系统也是面向人的.
    正常情况就应该是看到10进制的结果而不是2进制的.
    普通用户一开始就不应该知道2进制的东西.

    另外你现在可以看看自己手头的硬盘 算算容量 大部分应该是要超过标称的.

  28. fisher说道:

    买了飞利浦的Mp4,Spark2,这家伙标称4GB,结果一看就3.2GB可用,这不合理吧?400来MB做MP3的固件了?

  29. allplay说道:

    还有人没搞懂?还想有新情况?
    搞不懂伪科学老鼠会(-方舟子)的人怎么这么没逻辑
    KB=KiloByte=1000byte
    KiB=KibiByte=1024byte
    这是写进国际标准的东西,有人却跑来说要kilobyte=1024byte
    硬盘厂商好无辜!我看了西部数据的案子,败诉,但那是2006年。
    自2008年新标准发布以来,
    KB MB GB 严格的说,正如这个单位名称本来的含义,属于十进制单位,跟其他国际单位制相统一,不是再是令人混淆的二进制单位了。

  30. fuxxbaidu100说道:

    计算机 的储存系统 都是用2进制来 计算的,这是 常识问题吧,所谓 的 十进制 标注 储存空间,都是 商家 的营销手段而已,让你 看上去觉得比较多(本质上 就是一种欺诈行为)。

    • zzt说道:

      喵了个咪。。。国际标准就是GB=1000KB。。。。只能怪消协的人只会用windows,买不起Mac,不懂Linux。。。

      • Subject X说道:

        Linux显示的磁盘容量也是“缩水”过的

  31. houtinghua说道:

    按说看这篇的人中程序员不少了,怎么就没人回答正确呢

    我的解释为磁盘容量=你在操作系统中看到的可用空间+系统格式化磁盘后预留的文件头信息(其中包括描述一个文件的所在的每个簇的开始位置以及所在路径权限等信息)

    加入你把文件簇的大小设置为512字节 那么一个1000字节大小的文件要占有2个簇,这时这个文件头信息里面就要保存2*4字节的簇地址信息(这个4字节跟操作系统相关) 文件越大,这个文件头也就越大(据说google有个专利是丫有个64gb一个簇的磁盘结构,速度超快)

    欢迎补充

    • Baiger说道:

      事实上你不格式化的时候就能看到大小了,另外,按照你的说法,你算算文件系统的元数据占了多大的空间?够不够7%?

    • lazy说道:

      首先文中所说的U盘容量“缩水”,确实是由计量单位的不同所引起的,跟文件分配表等的一点关系都没有。
      其次,文件分配表确实占地方,但是在计量单位不同所引起的“缩水”基础上,进一步缩水。另外可以自己计算一下文件分配表的大小,按512字节为一个簇,8G的U盘也就是400万(4M)个簇左右,每个簇占4个字节,也就是16M,即使加上文件名与目录数据等,无论如何都不至于产生出几百M的差距。(U盘的格式化采用FAT的还是很普遍的,所以这里用FAT来估算,NTFS下的MFT理论上会预留1/8的空间,但实际上不影响剩余空间的报告),所以这个“缩水”和文件分配表等信息是无关的。
      另外,貌似所有计算机的存储外设,都存在这个计量单位的混乱,软盘、硬盘、光盘无不如是,从这个角度来说,10进制的计量单位,也是源远流长的,而且其历史绝对比windows、macos等要长。
      最后,不得不吐槽一下本文的评论,居然还有说中毒的………………

    • zzzevazzz说道:

      还程序员呢?简直是给程序员丢脸。根本不是格式化的问题。

  32. manson说道:

    北京消协显然是为了转移视线,让人们以为他们并不像老罗说的那样吃干饭不做事

  33. 星云说道:

    Windows作为事实上的行业标准已经快20年了,而存储设备厂商一直使用自己的标准,是不是还是有故意偷工减料的嫌疑呢?

    • allplay说道:

      windows的历史老还是硬盘厂商的历史老?

      • ghost说道:

        记得第一块硬盘是IBM做的,重200多公斤,容量达到惊人的……1兆……
        这块硬盘好像去年还是前年还能运行。

        别说windows了,更早的DOS都没磁盘的资格老。因为它的全名就是 Disk Operating System,也就是磁盘操作系统……

        最早的磁盘是5英寸大的、只有几百K容量的软盘,真的是软的,几乎能卷成筒状……至于硬盘,那得是非常高级的电脑才会配。

        至于磁盘容量,几乎在其诞生的那刻起,用的就是10进制表示法。毕竟存储上的突破还是很不容易的,1K字节怎么都比按1024算1K的0.99K好听……

  34. Tang说道:

    这种水平的文章也是科普嘛....
    科普不应该只是把某个领域最简单的知识拿出来讲吧....

  35. sal说道:

    那这调查也太水了吧。。。

  36. worry说道:

    大学里计算机文化基础都学过,看来北京很多人学历是假的啊

  37. kongyunzi说道:

    知道是1000和1024的差别,不过确实没听说过GiB这个东西

  38. Being说道:

    国家的行政人员专业素质低下,都是吹嘘遛马的本事,让人看起来就像一群白痴,只会转移视线,不愿解决问题····

  39. mingle说道:

    怎么说我们的工作人员呢,是人脖子上长了猪脑袋,还是猪身上长了副人脸。

  40. lukeys7说道:

    标准就是一个约定俗成的产物。
    因此,当windows流行多年,消费者都习惯于1GB=1024MB的时候,
    U盘厂商用“1GB”(而不是“1000MB”)来标明容量,不就是明显的误导么?

  41. lpdcnat说道:

    缩水个p啊,硬盘容量比我们看到的容量大得多,不过那是中毒之后的情况,比如一个20g的分区能显示成1T的空间容量,所以说散装硬盘问题多

  42. 夜珊瑚礁说道:

    节目里面的应该是换算问题,不过缩水的U盘还是有的,之前刷量产U盘做模拟光驱的时候查过……介绍:http://www.ijinshan.com/duba/upan/question2.shtml

  43. seal说道:

    小学知识,不解释··· ···

  44. poet说道:

    这个其实,还是 U 盘缩水的事儿~~~

    存储领域只有磁盘类的才传统使用 1000 作为标注。而非磁介质类存储大都是使用 1024 的。

    各位,当你的计算机有 1G 内存的时候,你知道这个1G是 1000000000字节,还是 1024*1024*1024 字节么?告诉大家,一定是后者!

    U盘作为非磁介质类存储,使用 1000 进行标注显然是缩水,而且这存在一个明显的问题是:此类介质的存储芯片,容量都是 1024 的整数倍, U 盘得搭配成什么样的配合才能配出 1000 整数倍的容量???为了缩水,看来这些U盘厂商已经没有底线了。

    • 肥猫说道:

      毛线,u盘也是按照1000标的,这玩意儿可是半导体非磁介质

  45. James说道:

    什么跟什么啊,闪存芯片谁见过按1000计算的?总线该设多少根啊?9根访问不全,10根的话,大于1000的地址怎么响应?

    怎么科学松鼠会也登这种文章啊,还这么多人信。。。。。

  46. TLC说道:

    为什么不说TLC芯片?
    主控的磨损均匀没那么神吧!

  47. Miu说道:

    我也学过一点数电。觉得对于闪存用1000进制标注容量是不方便的。如果要用GB制,U盘上不应该是整的8G 16G之类的容量

  48. 七月的烟火说道:

    其实这个问题我也纠结很久。对于磁盘而言,厂商用1000进制标准来计算容量没什么好说的,因为那就跟我们计算房间的面积差不多,只是在盘面上的物理空间划分而已。但是对于闪存这种本身也是电子芯片的东西而言,不是用二进制标准计算容量会更方便吗??

  49. 无知者无畏说道:

    软盘难以验证了,现在的电脑都没有软驱了,但如果手头有旧的硬盘的话,不用太老的,02年左右80GB的,装到电脑上你就会发现十足的容量了,至于移动式磁盘也就是优盘,至少我知道的是在进入GB时代之前,都是十足的1024进制的,那时候根本就没有什么容量损耗的说法。
    到现在大家认为理所当然的事情,完全是近十年来磁盘存储行业对于大家观念的扭曲

  50. 超级GG说道:

    从来没听说过1GB=1000000000字节的说法。都是记成1024进。

  51. highstar88说道:

    昨天新开封一个移动硬盘硬盘,320GB “缩水”至290+GB,也是无辜的吗?

    • highstar88说道:

      320*1000*1000*1000/1024/1024/1024 =: 290+
      GB 与GiB !明白了!

  52. 諸神黃昏说道:

    修改标准?!你的脑子是坏掉的么?!你知道修改标准要花费多大代价么?!还什么明明可以修改标准的!你什么专业的,就这么大言不惭说出这种话!难道又是一个2乎乎的文科白痴?!

    • 马亚杰说道:

      文科生招你了?范围攻击,你当你原子弹啊

      • 諸神黃昏说道:

        我就是群嘲,怎么的?你有意见?我还就是不怕当原子弹!"我知道我的命运.总有一天,我的名字要同那些对可怕事物的回忆联系在一起...我不是人,我是炸药..."怎么着,你又能奈我何?!

  53. 光广光光说道:

    哈哈哈