題 K = 1024的起源是什麼? [關閉]


為什麼存在以千字節為單位的字節數差異?在某些地方,我看到了數字1024(210)而在其他情況下它是1000(並且M,G,T等的差異越來越大)。

這不是關於它應該是1024還是1000(儘管你可以在評論中討論它)的討論,而是關於這種情況起源和/或變得普遍的地點/時間。

據我所知,Linux和硬件製造商從不使用1024變體。那,以及傳聞,讓我覺得MS-DOS使這個版本很常見,但事實是什麼?


73
2018-05-23 11:00


起源


一種表示是二進制(2 ^ 10或1024),而另一種是十進制(10 ^ 3或1000)... - Trezoid
如果您正在尋找特定的人來指責,請指向硬盤製造商。當它以十進制MB,GB等表示時,它們使得它們的設備看起來更具容量。我相信它總是這樣做但直到最近才出現十進制和二進制之間的差距已經擴大到足夠寬重要的是。 - LawrenceC
@ultrasawblade:你想把硬盤驅動器製造商歸咎於成為使用該術語的唯一群體之一 gigabyte 是否正確? - paradroid
在我看來,在20GB左右的驅動器變得司空見慣之前,1K = 1024與任何計算機相關的東西似乎都是理解的。這也與許多非技術人員定期開始使用PC的時間大致相符。從90年代早期開始,大量的計算機文獻(技術和非技術)都沒有提到關於“十進制”KB或“kibibytes”的任何內容。 - LawrenceC
@paradroid:gigabyte最初意味著1024 MB(和mb = 1024 kb等)。它被重新調整為1000,因為硬盤製造商堅持使用它是錯誤的。不可否認,這確實取決於你認為“正確”,因為公斤意味著1000,但在計算機科學中,千字節在技術原因總是1024,直到1999年改變。 - James


答案:


它可以追溯到很久以前了 詳細說明。看起來你可以責怪IBM,如果有人的話。

考慮到這一點後,我會責怪整個美國人,因為他們公然無視這一點 Systèmeinternationald'unités :P


63
2018-05-23 11:05



指責美國人總是容易的。 - Notinlist
@Notinlist:這是個玩笑。 - paradroid
它讓我想起了紙漿小說電影的一個史詩般的場景......一個關於“公制”的問題。 :-) - Pierre Watelet
@Notinlist總是責怪美國人很容易。這就是我們這麼做的原因。那和它的樂趣一樣的事實。 - Singletoned
1961年的進入很有意思,因為它提到“65k” - 是第一個數量級,它可以顯示“k = 1024”和“k = 1000,四捨五入”之間的明顯差異,它明顯地落後於後者。另一方面,在1964年,每個人都在使用二元意義。 - Random832


所有計算在開始時都是低級別的。在低級編程中,數字“1000”完全沒用,他們需要更大量的前綴,因此他們重用了SI。每個人都在現場知道,沒有混亂。它服務了30年或誰知道。

這不是因為他們是美國人所以他們需要不惜一切代價打破SI。 :-)

沒有程序員我認識並說kibibyte。他們說千字節,他們意味著1024字節。算法充滿了2的冪。即使在今天,“1000”在程序員之間是一個真正無用的數字。

說kibi和mibi太搞笑了,引起了人們的注意。我們很樂意將其贈送給電信和磁盤存儲部門:-)。我將在非程序員可以閱讀的用戶界面上編寫kibibytes。


26
2018-05-23 15:09



在談論比特時說話更加有趣 - “mibibit” - James
我認為KiB等應該發音為kilobinarybyte等,而不是kibibyte。 - Lie Ryan
@Lie Ryan,使用像“kilobinarybyte”這樣的前綴是一個最終失敗的提案,並且有不同於kibibyte的縮寫。看到 en.wikipedia.org/wiki/Binary_prefix - Ben Lee
當然,說“千字節”是完全可以接受的,它實際上比kibibyte更透明,聽起來更傻,但這種用法不受IEC認可。 - Ben Lee
那麼將km稱為千兆計是否公平? - JustJeff


技術人員在許多情況下使用1024 = 1K是正確的,也是有道理的。

對於最終用戶,通常最好說1000 = 1k,因為每個人都習慣於基於10的數字系統。

問題是在哪裡劃線。有時,營銷或廣告人員並不真正成功地進行“翻譯”或使技術數據和語言適應最終用戶。


8
2018-05-23 11:18



技術人員應該知道1024字節實際上是Kibibyte(KiB),但知道該術語是 不 非技術人員所知。 - paradroid
誰說這是對的? Kilo意味著1000個世紀,所以IMO他們應該永遠不會用它1024。 - Bart van Heukelom
該字節不是SI單位; KB意為“kilobel”(被授予,你不會想要使用的單位,除非你描述大爆炸產生的聲音,如果有的話。) - Wooble
@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字節。 - Third
然而,kiB等變體是相當新的。當這個問題出現時,我認為它們並沒有被使用,當然 - 我的印像是他們完全是為了解決它! - Shinrai


責怪半導體製造商(他們只向我們提供二進制硬件)[1]

更好的是:責備邏輯本身(二進制邏輯只是最基本的邏輯)。

更好的是: 誰應該責怪這個可憐的十進制

它比二進制系統有更多的缺陷。 它是基於 咳嗽 在人類物種的平均手指數量 咳嗽

嗚...

[1]我想要我的量子三比特計算機!現在!


3
2018-05-23 14:56



我想你會發現手指的平均數量小於10 </ pedant> - Rory Alsop
@Rory:^那是個好笑 - Mehrdad
@Rory:“少”</ pedant>。或者是嗎?等一下,我... - outsideblasts


1024不應該被指責它確實是一件非常好的事情,因為它是計算機(數字)可以像現在一樣快速和高效的原因。因為計算機只使用2個值(0,1),所以它可以解決anolog系統的困難和復雜性(不准確性)。

如果我們說千位是1000位會更複雜,因為2到1000的功率是多少?所以即使1千字節也不准確,因為它會有浮點或近似值。

但我主要歸咎於銷售8千兆字節的營銷,並在小字體中加入

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

真的很遺憾,這與連接速度是一回事,你的ISP會說1.5Mbps而不是告訴你~150千字節。這只是非常誤導


1
2018-05-23 15:51



在說15682位的文件有多大,或者這個文件通過網絡傳輸的速度有多快時,2的冪不起作用。這就是最混亂的背景。 - Bart van Heukelom
最終,文件存儲在內存頁面中,這些頁面與二進制功率邊界對齊。通過TCP發送時,發送數據包的窗口大小是2的冪的倍數。當文件存儲在硬盤驅動器上時,它以2的冪為單位存儲。我明白你在說什麼,但千字節= 1024(或至少2倍的倍數)在計算中根深蒂固。 - FryGuy
公平地說,網絡一直以比特為基礎。 - Synetech
第一個5.25“軟盤持有109,375字節並被宣傳為”109.4千字節“。我猜他們也出於惡劣的營銷原因這樣做了嗎?你認為把它寫成”106.8 KB“會更合乎邏輯嗎?磁帶驅動器和處理器速度和調製解調器的速度都是十進制的,以欺騙我們?請。 - endolith
@Ibu:1,000,000,000字節和1GB之間的差異是0.實際上,當差異如此之小時,為什麼軟盤製造商會惡意膨脹他們的數字呢?他們不會。他們使用了1000,因為它是合乎邏輯的,明顯的和正確的,不是因為它們是欺騙客戶的陰謀的一部分。出於同樣的原因,硬盤驅動器製造商自MB年以來也已經測量了1000多個。 - endolith


當你認為計算機上的數字是二進制的,而2 ^ 10是1024時,它是完全合理的。使用1024而不是1000更容易,因為只使用整數數學就可以輕鬆地除以1024 位移。除以1000是一個更昂貴的操作,可能需要浮點數學。

例如。

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

0
2018-05-24 09:06



你認真考慮計算時間是否相關?為什麼計算機不將“km”處理為“1024 m”,那麼,如果它很難轉換? - endolith
@endolith是的,我想是的,至少在歷史上如此。雖然今天可能可以忽略不計,但在每個CPU週期非常寶貴的早期階段,一個快速簡便的計算方法可以為這樣的事情提供合適的答案。特別是如果人們通過慣例知道1KB意味著1024字節。 - Jo-Herman Haugholt