1 MB是否可以表示1000000字节,1024000字节或1048576字节是否正确?[重复]


63

可能的重复:
千字节,千位和千字节有什么区别?

如果1 KB(千字节)可以表示1000字节或1024字节,

1 MB(兆字节)可以表示1000 KB或1024 KB,

这不是说1 MB可以表示以下四个之一吗?:

  1. 1000×1000 = 1000000字节

  2. 1000×1024 = 1024000字节

  3. 1024×1000 = 1024000字节

  4. 1024×1024 = 1048576字节

还是不接受2.3.,所以1 MB可能意味着1048576字节中只有1000000字节?


3
您是否知道有-0(负零)和+0(正零)?en.wikipedia.org/wiki/Signed_zero
Aki

4
我所见过的唯一混合了不同前缀的地方是1.44 [不是兆字节也不是兆字节]软盘。
AndrejaKo 2012年

Aki是的,但我不明白您要说什么?
Pacerier

“如果数字不漂亮,我不知道那是什么。” -PaulErdős–
Aki

4
请“ kB”,而不是“ KB”。
Andreas Rejbrand 2012年

Answers:


107

首先,在谈论数字信息(读取字节)时,有两种前缀:SI前缀二进制前缀

SI前缀

SI前缀1000的乘方(1000 1,1000 2,1000 3,等等):

  • 1 kB = 1千字节= 1,000 1字节= 1,000字节;
  • 1 MB = 1兆字节= 1,000 2字节= 1,000,000字节;
  • 1 GB = 1 GB = 1,000 3字节= 1,000,000,000字节;

如您所见,只有大号及以上的SI符号大写。因此,KB不是有效的prefix

二进制前缀

二进制前缀的1024功率(1024 1,1024 2,1024 3,等等):

  • 1 KiB = 1 kibibyte = 1,024 1字节= 1,024字节;
  • 1 MiB = 1兆字节= 1,024 2字节= 1,048,576字节;
  • 1 GiB = 1 gibibyte = 1,024 3字节= 1,073,741,824字节;

如您在这里看到的那样,每个二进制符号都大写,并在B符号之前添加小写字母i,以表示我们在谈论的是千字节而不是千字节,而兆字节是兆字节,等等。


但是,二进制前缀没有得到广泛使用,Windows根本不使用它们。

Windows告诉我们,硬盘驱动器的容量为300,066,795,520字节,根据Windows,这等于279 GB。但是,我们知道如果1,000,000,000字节= 1 GB,则300,066,795,520字节=〜300 GB =〜279.5 GiB

因此,如果您看到1 KB(记住,这是错误的)或1 MB,则假定我们分别在谈论1 kb和1 mb。即使KbkbGbgb等代表(8位= 1字节),它们也很常见。


好的,即使(坏)用法似乎相反,1 KB或1 MB在任何情况下都不能具有多个值。


3
也许您应该补充一点,当谈论数据传输速率(以位/秒为单位)时,通常使用以10为基数的前缀,例如Gb / s实际上意味着“每秒十亿位”。
Frank

3
二进制前缀相对较新,使用SI前缀来指2的幂仍然普遍。我认为很多人甚至都不知道二进制前缀。@Novox提出了一个很好的观点:即使使用GB表示1048576字节存储空间的人通常也使用Gb / s表示每秒1000000000位。二进制前缀的发明并未使所有用法保持一致。
基思·汤普森

5
@kubanczyk:我不同意它是懒惰-但是懒惰不一定是一件坏事。我们需要一种以1024、1048576或1073741824字节为单位引用存储的方法,并且在(相对较新的)发明二进制前缀(Ki,Mi,Gi)之前,重新使用SI前缀(K,M, G)是唯一可行的方法。我们这样做已经有很多年了,以至于K,M,G前缀仍然模棱两可。从一开始就始终使用二进制和SI前缀会更好,但是事实并非如此。
Keith Thompson

2
@kubanczyk不要误会我的意思,我/我/是正确使用单位的坚定支持者。不过,我不认为“很明显”。如果确实如此,那将不会有任何问题,对吗?
Frank

3
嗯,让我们尝试另一种方法,对吗?看看8位发生了什么。有人不说十进制,而是坚持说十进制有时在IT 8中不是10,而是有人发明了一个新术语并称其为字节。瞧!相同的解决方案是可能的1024如果不是65536
kubanczyk

14

千字节以10为基数,因此1千字节= 10乘以3 = 1000字节的幂。

尽管这是不太准确的准确测量其在基座2测量,因此,因为它们被存储在二进制物理数据kibibyte成立于1999年在计算机科学中的上下文中用于指1024个字节时,以取代千字节。

千字节是基数2的量度,因此1千字节= 2到10 = 1024字节的幂。

同样适用于兆字节(1兆字节= 10乘以6 = 1000000字节的幂),基数2的度量单位为兆字节(1兆字节= 2乘以20的幂= 1048576字节)

  • (1)适用于兆字节
  • (2)和(3)不被接受
  • (4)适用于兆字节

13
尽管从技术上讲这是正确的,但我想指出的是,通常没有人说千字节或兆字节,在谈论“千字节”时,人们指的是Windows或OS显示的单位为千字节。我经常看到正确使用的唯一字节数是硬盘驱动器容量,这使用户无休止。
达斯Android

4
是的,但这仅仅是因为他们的操作系统没有“正确”使用SI前缀。
Frank

2
MB仍然可以表示1,000,000或1,048,576字节。尽管不正确,但它普遍。CC @DarAndroid
丹尼尔·贝克

啊,1998年……冥王星是行星,千字节为1024字节。
Skrymsli

9

当前,不赞成使用“ KB”,“ MB”等来表示除1000字节,1000 x 1000字节等以外的任何内容,这与大多数官方标准相反。表示1024字节,1024 x 1024字节等的新方式是KiB(千字节),MiB(兆字节)等。这很混乱,上下文对于理解含义是必不可少的。有关这些问题的讨论,请参见http://en.wikipedia.org/wiki/Kibibyte


7

可能不是,因为在单个数字中前缀的使用会不一致。

尽管SI前缀 k代表1000,但在IT中通常用1024来表示(带有一些提倡的二进制前缀),但在相同数量的这些含义之间进行选择是没有意义的。



@JdeBP:有趣的笔记。它一直“正确”(在基地2意义上)说,1440 KB。我从未想过/实现1.44数字中两个“系统”的混合。+1。
BillP3rd 2012年

3

您的问题是正确的。1和4是正确的,2和3是不正确的。

基本上,您定义“千”,即1000或1024,并将其用于乘法。他们不会被交换。

在基数2(二进制)中,可以整洁地接近1000的最接近数是1024(2 ^ 10)。这是计算机实际考虑事物的方式,因此在内存(RAM)中,例如1MB将为1048576字节。

但是,以10为基数,您实际上可以有1000个。磁盘驱动器可以像这样工作,并且在HDD上,通常1MB将为1000000字节(尽管固态以二进制形式工作)。

基本上,这是由于计算机和存储设备的工作原理通常略有不同,因此对同一事物有不同的定义。


1

所以,这是交易。(大多数),今天的计算机上运行在基地2个,不垒10。(是的,我知道有例外,但他们真的例外情况。)对于我们(你)的目的,所有通用计算机(当然,所有的消费者使用通用计算机)将base 2用于所有内部处理。基本单位是可以为零或一的位。其中八个一起组成一个字节。16个字。现在,通常来说... 32位计算机通常被认为使用32位“字”,64位计算机,64位字,等等。你注意到了吗?这些都是2的幂。具有一个“ K”或千字节内存的计算机将始终具有1024字节的内存。一兆字节的内存将始终意味着1024 x 1024字节。同样,所有都是2的幂。因此,具有64 MB内存的计算机将始终具有64 x 1024 x 1024字节。当您看到出售广告的计算机时,内存容量(RAM)始终基于2的幂。您将永远不会看到视频卡,例如,声称1GB的RAM意味着十亿字节。

造成混乱的原因是,使人们疯狂的地方是磁盘驱动器制造商在寻求提供越来越大的驱动器时说:“嘿!您知道,在其他区域(不是计算机),K是1000,而K是1000。 M是1,000,000。” 例如,如果有几个人在讨论汽车的售价,并且有人提出“我认为'8K'听起来不错”,那么另一个人会自动理解'8K'意味着8,000美元,而不是8,192美元。因此,那些磁盘驱动器制造商说:“让我们开始使用这些措施来宣传我们的产品,以使它们听起来更大。” 但是法律人员介入后说:“在这里等一下。实际上,每个知道的人,他们的工作方式将是犯规的。”那些聪明的广告人回答说:“没问题。好吧,只需在包装盒上的容量旁边加上一个小小的星号,然后在我们的文档中说“ * 1GB = 1,000,000,000字节”。问题解决了。”

因此,我们充满了所有这些困惑。引用@kreemoweet引用的上述Wiki文章,

在大多数情况下,千字节继续用于表示10的幂以及2的幂。

混乱还在继续。出于实际目的,您可能应该假设磁盘容量是基于10个计量单位的。同样,RAM容量(可能)将始终基于基数2单位。对于其他类型的设备和产品,这可能取决于底层技术以及广告界人士认为他们可以避免的事情。毕竟,越大越好,不是吗?

有关其他更多信息,您可以细读二进制前缀时间轴。它不会使事情更清晰,但它阅读的乐趣。


2
您确定这仅仅是纯粹的营销吗?也许还与存储本身的结构/组织有关。
barlop 2012年

3
-1这不是市场营销,也不是使磁盘驱动器听起来更大。这是一种广为传播但完全错误的解释。这也是基于对主题的总体无知的推论。国际电工委员会和电气与电子工程师学会实际上在1997年的IEEE Standards Bearer文章中提出了基本原理,这与使不同的工程学科讲相同的语言而不相互混淆。这是非常实际的工程问题。
JdeBP '01年

4
我在1980年代和90年代为Miniscribe和后来的Maxtor工作的经验告诉我其他情况。作为计算机工程师,我们倾向于2的幂。一个字节始终是8位。正如@barlop所添加的,与主计算机内存不同,旋转磁盘驱动器可以具有多种多样的结构/组织。甚至更是如此,因为驱动技术已经进步,使得每个轨道的扇区数从记录表面的内边缘到外边缘都变化。请注意,扇区具有512字节。(再次令人讨厌的2的幂)。
BillP3rd 2012年

1
那是缺乏经验:对工程学的狭窄而近视的看法。请阅读IEEE标准承载文章。正是这种眨眼的表情,“但是人们总是使用二的幂。” 想着,那然后去可怕的错误,当它击中的工程多数没有蒙蔽这样的,这是和在旨在正视。正如我所说的,这是一个实际的工程问题,具有讽刺意味的是,您演示了它所针对的问题。这不是营销,也不是要使任何事情听起来更大。那完全是捏造的垃圾。不要相信
JdeBP

1
@JdeBP确保工程师肯定提出了可证明的术语kibibyte等。我不知道在硬盘驱动器领域有多少工程师使用它。我曾想过,也许他们会从上下文中了解千字节的含义,并且不需要一口千字节。看起来BillP3rd认为他们应该知道,并且应该是base2,并且您认为他们需要指定彼此之间的了解。但是市场营销会选择使用较小的单位,即包装上的十进制前缀。我想知道,即使在该IEEE文章发表之前,市场营销是否也正在这样做。
barlop 2012年

0

是的,因为这是语法错误。 这篇Wiki文章解释了该问题,并包括要使用的“新”单词表。在现实世界中,没有人使用这些术语。您必须使用上下文来确定要查看的定义。


4
-1表示“无人”。我在现实世界中使用它们,而我并不孤单。
JdeBP '01年

1
如果普通消费者问销售人员他们正在考虑购买的计算机的存储容量,并被告知“ 4吉字节”,那么他们根本不知道这是什么意思。同样,绝大多数人永远不会大声说出“千兆字节,千兆字节,千兆字节等”。认真地,尝试以最快的速度大声说出“技嘉”三倍。我可以说,至少对于我自己,我从未听过。(在上下文中,我为一家大型软件公司工作,您可能听说过该例行
事务

+1提及那些有趣的术语,并且大多数人不使用它们并使用上下文
barlop 2012年

1
“ no-one”的意思是“ no-one”,孩子,并且不会因上下文而神奇地更改为除单词含义之外的其他含义。这是一个虚假,但您尝试将其砍掉。
JdeBP 2012年

1
@JdeBP-对不起Jdebp,但希望不会如此。千字节这个词的存在本身就证明了对含义的困惑(现在仍然如此)。很抱歉,您已经被这个词困扰了十年了(在2000年发现具有kibibyte值的硬盘驱动器一定很困难)。我还建议您编辑我引用的Wiki文章-显然,它们也必定由于缺乏使用而全都错了(它们一定使您脱离了投票列表)。
Jim B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.