zoukankan      html  css  js  c++  java
  • 震惊!1MB == 1000KB??

    稍微对电脑了解一点的同学可能都知道,电脑中的单位换算是:

    1KB = 1024B
    1MB = 1024KB
    1GB = 1024MB
     ...

    以前,我也是这么认为的....

    最近我在Linux解压某个文件的时候,发现了一个奇怪的单位 MiB 。为啥是MiB,而不是MB呢?立刻百度了一下,说是MiB用来表示计算机二进制单位换算,所以 1MiB = 1024KiB .....

    啥?难不成MB 和 MiB 是一样的吗,那为啥还在MB中间搞一个撇脚的'i',直接都用MB不好吗?又经过了一顿百度谷歌维基后,总算是了解了一个大概:

    其实,在国际单位制(SI)中,早在1960年就已规定好了倍数的表示:

                       (摘自WikiPedia)

      而从硬盘诞生之初,硬盘制作商们就严格按照SI标准,采用十进制表示倍数,直至现在。十进制的表示似乎对硬盘制作没有太大的影响,但对软件开发来说,实在是太不方便了。计算机中的数据是以二进制形式存在的,在程序对位操作的时候,用十进制单位,难以凑整,这着实逼急了强迫症的程序员们。于是,一些”任性“的程序员们,就把单位进制给改了,改成了方便DeBug的二进制换算。这里的问题在于,改了单位换算,却没有换名字!

      于是,就有了这样的说法——“计算机是二进制换算的,所以不是1000进位,而是1024进位。”同一单位在不同情况下有不同定义,这不免会产生混淆。在计算机发展之初,存储容量还很小,就算是只用字节(Byte)这样小的单位,也不会出现特别大的数字,单位换算在起初问题还不足以引起人们的重视。后来,在“摩尔定律”的加持下,计算机发生了突飞猛进的变化,单位换算混淆问题日益严重。

      到了1998年,国际电工委员会(IEC)才定义了一种新的带有 二进制前缀的单位,Gibibyte(Giga binary byte)或GiB就是其中一个,它总算是解决了计算机二进制单位与国际单位制在命名上的冲突。

    (摘自WikiPedia)

      那么问题来了,为什么到现在为止,仍有许多人认为1GB = 1024MB呢?

     那是因为,微软并没有在世界上最流行的PC操作系统Windows上根据标准进行修正!直到现在,在最新版的Windows 10中,也没有做任何变化。哪怕微软在2001年发布的Windows XP上修正了这个问题,也不会让大家形成这样的错误认知。真是苦了存储硬件制造商这么多年背的黑锅。

    PS:

    据我了解,现在只有Windows会错用单位,MacOS和Linux都没有这个问题。

    在网络技术中,通常用比特(bit)而不是字节(byte)为单位,网络运营商(ISP)宣传的百兆光纤,一般指的是100Mb(百兆比特)每秒,对应1比特=1字节,相当于12MB(12兆字节)每秒。其中,大写的B表示字节,小写的b表示比特。

  • 相关阅读:
    初识线段树
    win7下vc6.0打开文件未响应的解决方法
    SQL 2008安装
    20200730 Div.2模拟赛题解
    20190928 Div3模拟赛题解
    Codeforces Round #664 (Div. 2) 题解
    CSP2019回忆录
    [SHOI2014]三叉神经树(加强版)题解
    Linux 下修改Swap区设置
    LoadRunner监控Linux与Windows方法
  • 原文地址:https://www.cnblogs.com/harson/p/10272218.html
Copyright © 2011-2022 走看看