K = 1024的起源是什么?[关闭]


73

为什么千字节中的字节数存在差异?在某些地方,我看到了数字1024(2 10),而在其他地方则看到了1000(数字随着M,G,T等的增加而越来越大)。

这不是关于应该是1024还是1000(尽管您可以在评论中讨论它),而不是关于这种情况的起源和/或传播时间。

据我所知,Linux和硬件制造商从未使用过1024版本。这和传闻让我认为MS-DOS使该版本变得通用,但是事实是什么?


23
一种表示形式为二进制(2 ^ 10或1024),另一种形式为十进制(10 ^ 3或1000)...
Trezoid 2011年

13
如果您要找特定的人负责,请指向硬盘驱动器制造商。当以十进制MB,GB等表示时,它使他们的设备看起来好像具有更大的容量。我相信他们一直这样做,但是直到最近,十进制和二进制之间的鸿沟才足够大至关重要。
LawrenceC

23
@ultrasawblade:您想责怪HDD制造商是唯一gigabyte正确使用该术语的组织之一吗?
paradroid

13
在我看来,总是可以理解的是,在20GB左右的驱动器普及之前,与任何与计算机相关的东西都等于1K = 1024。这也与许多非技术人员开始定期使用PC的时间大致吻合。从90年代初期开始,大量的计算机文献(技术和非技术文献)都没有提及“十进制” KB或“千字节”。
LawrenceC

13
@paradroid:千兆字节原本是1024 mb(而mb = 1024 kb,等等)。重新定义它的意思是1000,因为HDD制造商坚持错误使用它。不可否认,这确实取决于你认为什么是“正确的”,因为公斤也意味着1000,但计算机科学中,千字节总是1024由于技术原因,直到它在1999年改变
詹姆斯

Answers:


63

它可以追溯很长时间,在这里进行详细介绍。好像有人可以责怪IBM。

再三考虑之后,我将责备整个美国人,因为他们公然无视SystèmeInternational d'unités:P


31
总是很容易责怪美国人。
Notinlist,2011年

13
@Notinlist:这是个玩笑。
paradroid

5
这让我想起了低俗小说电影的史诗场景……那个关于“公制”的问题。:-)
Pierre Watelet

7
@Notinlist很容易总是责怪美国人。这就是为什么我们要做那么多的原因。那就是事实,它的乐趣。
单身

3
1961年的条目很有意思,因为它提到“ 65k”-它是第一个数量级,可以显示“ k = 1024”和“ k = 1000,四舍五入”之间的明显差异,对于后者明显降低了。另一方面,在1964年,每个人都在使用二进制含义。
Random832

26

一开始,所有计算都是低级的。在低级编程中,数字“ 1000”是完全没有用的,并且它们需要更大数量的前缀,因此可以重复使用SI。每个人都知道这一点,没有混乱。它服务了30年,还是知道的。

这不是因为他们是美国人,所以他们需要不惜一切代价打破SI。:-)

我没有认识的程序员说kibibyte。他们说千字节,意思是1024字节。算法充满了2的能力。即使在今天,程序员之间的“ 1000”仍然是一个毫无用处的数字。

说“ kibi”和“ mibi”实在太有趣了,引起了主题的注意。我们很乐意将其赠送给电信和磁盘存储部门:-)。我将在非程序员可以读取的用户界面上写入千字节。


3
谈论位时甚至更有趣-“ mibibit”
James

3
我认为KiB等应该发音为KB,而不是kibibyte。
Lie Ryan

2
@Lie Ryan使用诸如“ kilobinarybyte”之类的前缀是一个最终失败的提议,并且其缩写与kibibyte有所不同。参见en.wikipedia.org/wiki/Binary_prefix
Ben Lee

3
因此,将km表示为千分之一米是否公平?
JustJeff 2011年

3
数字1000并非“完全没有用”。自1950年代以来,“ k = 1000”已用于计算。首先的计算机实际上是十进制计算机,而不是二进制计算机。联网速度始终以1000的倍数来衡量。“它在30年内运行良好”?真?程序员抱怨“ k = 1024”至少已有43年了。en.wikipedia.org/wiki/Timeline_of_binary_prefixes
endolith

8

这是正确的,并且在很多情况下对于技术人员来说使用1024 = 1K是有意义的。

对于最终用户,通常最好说1000 = 1k,因为每个人都习惯于基于10的数字系统。

问题在于划清界限。有时,市场营销人员或广告人员在“翻译”或使技术数据和语言适应最终用户方面并没有真正成功。


13
技术人员应该知道1024字节实际上是一个千字节(KiB),但要知道非技术人员知道该术语。
paradroid

8
谁说的是对的?基洛意味着1000几百年来,所以IMO他们不应该将它用于1024
巴特面包车Heukelom

20
该字节不是SI单位;KB的意思是“ kilobel”(授予,除非您描述大爆炸产生的声音,否则您永远不会使用的单位。)
Wooble

10
@njd:C64具有65536字节的RAM。按照约定,内存大小以kibiBytes为单位,数据传输速率以千位为单位,大容量存储以制造商认为的字节数为单位。硬盘驱动器在标签上使用T,G,M和k,Windows报告Ti,Gi,Mi和ki的大小。还有那些1.44MB的软盘?这些既不是1.44MB也不是1.44MiB,它们是1.44千字节。那是1440kiB或1'474'560字节。

5
kiB等变体是相当新的。当然,当出现此问题时,我认为它们并没有在使用中-我对它们的印象完全是为了解决它!
井2011年

3

指责半导体制造商(他们仅向我们提供二进制硬件)[1]

更好的是:怪罪逻辑本身(二进制逻辑只是最基本的逻辑)。

更好的是:我们应该为糟糕的十进制系统归咎于谁

它比二进制系统具有更多的缺陷。它是基于咳嗽对人类物种的平均数量手指的咳嗽

喔...

[1]我想要我的量子三量子位计算机!!!现在!


29
我认为您会发现平均手指数少于10 </ pedant>
罗里·阿尔索普

1
@Rory:^这是一个很好笑
迈赫达德

2
@Rory:“更少” </ pedant>。还是?稍等,我知道...
outsideblast

1

不能怪1024是件好事,因为这是计算机(数字)可以像今天一样快速和高效的原因。因为计算机仅使用2值(0,1),所以它从等式中消除了模拟系统的困难和复杂性(不准确性)。

如果我们说千字节是1000位,那会更复杂,因为2等于1000的幂?因此,即使1 KB也将不准确,因为它将具有浮点数或近似值。

但是我主要归咎于销售8 GB *并将其添加到小字体中的营销

* 1 gigabyte is 1,000,000,000 bytes. 

确实很遗憾,连接速度也是如此,您的ISP会说1.5Mbps,而不是告诉您〜150 KB。这只是非常误导


3
在说15682位的文件有多大或这种文件可以在网络上传输的速度有多大时,2的幂不起作用。这就是最令人困惑的背景。
Bart van Heukelom

2
最终,文件存储在与二进制电源边界对齐的内存页面中。通过TCP发送时,发送数据包的窗口大小是2的幂的倍数。文件存储在硬盘驱动器上时,将以2的幂次存储。我理解您的意思,但是千字节= 1024(或至少是2的幂的倍数)在计算中根深蒂固。
FryGuy 2011年

1
公平地说,网络始终使用位作为基础。
Synetech

1
第一个5.25英寸软盘拥有109,375字节,并被广告为“ 109.4 Kbytes”。我想他们也是出于邪恶的营销原因这样做的?您认为将其写为“ 106.8 KB”会更合乎逻辑吗?以及磁带驱动器和处理器速度和调制解调器速度全都以十进制表示,以欺骗我们吗?
endolith 2011年

1
@Ibu:1,000,000,000字节与1GB之间的差为0。确实,为什么软盘制造商在差值如此小的情况下恶意地夸大其数量呢?他们不会。他们之所以使用1000,是因为这是合乎逻辑的,显而易见的和正确的,而不是因为它们是欺骗客户的阴谋的一部分。出于同样的原因,硬盘制造商自MB年来也已经测量了1000秒钟。
endlith 2011年

0

当您认为计算机上的数字是二进制数,并且2 ^ 10是1024时,这是很合理的。使用1024而不是1000会更容易,因为您可以仅使用整数数学和bit shift轻松地除以1024 。除以1000是更昂贵的运算,可能需要浮点运算。

例如

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1

您认真考虑计算时间是否合适?如果很难转换,为什么计算机不将“ km”处理为“ 1024 m”呢?
endlith 2011年

@endolith是的,至少在历史上我是这样认为的。尽管在今天可以忽略不计,但在每个CPU周期都非常宝贵的早期,对于此类事情,最好是快速而简单的计算给出一个好的答案。特别是如果人们按照惯例知道1KB表示1024个字节。
Jo-Herman Haugholt 2011年
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.