Jakie jest pochodzenie K = 1024? [Zamknięte]

73

Dlaczego istnieje rozbieżność w liczbie bajtów w kilobajcie? W niektórych miejscach widziałem liczbę 1024 (2 10 ), podczas gdy w innych jest to 1000 (i różnica staje się coraz większa w przypadku M, G, T itp.).

Nie jest to dyskusja na temat tego, czy powinna ona wynosić 1024 czy 1000 (choć można to omówić w komentarzach), ale na temat tego, gdzie / kiedy ta sytuacja się pojawiła i / lub stała się powszechna.

O ile mi wiadomo, Linux i producenci sprzętu nigdy nie używają wariantu 1024. To i słyszę, że myślę, że MS-DOS sprawił, że ta wersja jest powszechna, ale jakie są fakty?

Bart van Heukelom
źródło
23
Jedna reprezentacja jest binarna (2 ^ 10 lub 1024), podczas gdy druga jest dziesiętna (10 ^ 3 lub 1000) ...
Trezoid
13
Jeśli szukasz konkretnych osób do winy, wskaż producentów dysków twardych. Wygląda na to, że ich urządzenia wyglądają, jakby miały większą pojemność, gdy wyrażane są w dziesiętnych MB, GB itp. Zawsze to robiłem, wierzę, ale do niedawna różnica między cyframi dziesiętnymi i binarnymi nie wzrosła. mieć znaczenie.
LawrenceC
23
@ultrasawblade: Czy chcesz winić producentów dysków twardych za to, że są jedną z niewielu grup, które gigabyteprawidłowo używają tego terminu ?
paradroid
13
Po prostu zawsze wydawało mi się, że zrozumiałe jest to, że 1K = 1024 z czymkolwiek związanym z komputerem przed około 20 GB dysków stało się powszechne. Z grubsza pokrywa się to również z czasem, kiedy wiele nietechnicznych osób zaczęło regularnie używać komputerów. Ogromna ilość literatury komputerowej (technicznej i nietechnicznej) z początku lat 90. i wcześniej nie wspomina nic o „dziesiętnych” KB lub „kibibajtach”.
LawrenceC
13
@paradroid: gigabajt pierwotnie oznaczał 1024 mb (i mb = 1024 kb itp.). Został ponownie oznaczony jako 1000, ponieważ producenci dysków twardych nalegali na niewłaściwe użycie go. Wprawdzie zależy to od tego, co uważasz za „właściwe”, ponieważ kilogram oznacza 1000, ale w informatyce kilobajt zawsze wynosił 1024 z przyczyn technicznych, dopóki nie został zmieniony w 1999 r.
James

Odpowiedzi:

63

Cofa się od dawna i jest szczegółowo opisane tutaj . Wygląda na to, że możesz winić IBM, jeśli ktokolwiek.

Zastanawiając się nad tym, obwiniłbym Amerykanów jako całość, za ich rażące lekceważenie dla Système international d'unités : P

paradroid
źródło
31
Zawsze łatwo jest obwiniać Amerykanów.
Notinlist
13
@Notinlist: To żart.
paradroid
5
Przypomina mi się epicka scena filmu Pulp Fiction ... Ta z pytaniem o „system metryczny”. :-)
Pierre Watelet
7
@Notinlist Łatwo jest zawsze obwiniać Amerykanów. Dlatego tak często to robimy. To i fakt, że jest fajnie.
Singletoned
3
Wpis z 1961 roku jest interesujący, ponieważ wspomina o „65k” - jako pierwszym rzędzie wielkości, który może wykazać wyraźną różnicę między „k = 1024” i „k = 1000, w zaokrągleniu”, sprowadza się wyraźnie do tego ostatniego. Z drugiej strony w 1964 r. Wszyscy używają binarnych znaczeń.
Random832
26

Na początku wszystkie obliczenia były na niskim poziomie. A przy programowaniu na niskim poziomie liczba „1000” jest całkowicie bezużyteczna i potrzebowali prefiksów dla większych ilości, więc ponownie wykorzystali te z SI. Wszyscy wiedzieli o tym w terenie, nie było zamieszania. Służył dobrze przez 30 lat lub kto wie.

Nie dlatego, że byli Amerykanami, więc za wszelką cenę musieli przełamać SI. :-)

Nie ma programisty, którego znam i który mówi kibibyte. Mówią kilobajty i oznaczają 1024 bajty. Algorytmy są pełne potęg 2. 2. Nawet dzisiaj „1000” jest naprawdę bezużyteczną liczbą między programistami.

Mówienie kibi i mibi jest po prostu zbyt zabawne i zwraca uwagę na ten temat. Z radością oddajemy go sektorom telekomunikacyjnym i pamięci dyskowych :-). I napiszę kibibajty na interfejsach użytkownika, w których mogą go czytać nieprogramiści.

Spoza listy
źródło
3
Jeszcze zabawniej jest mówić o bitach - „mibibit”
James
3
Myślę, że KiB itp. Powinno być wymawiane jako kilobinarybyte itp., A nie kibibajt.
Lie Ryan
2
@Lie Ryan, używanie przedrostków takich jak „kilobinarybyte” było propozycją, która ostatecznie się nie powiodła i miała inne skróty niż kibibajt. Zobacz en.wikipedia.org/wiki/Binary_prefix
Ben Lee
3
więc czy byłoby sprawiedliwe wymawiać km jako kilodecymetr?
JustJeff
3
Liczba 1000 nie jest „całkowicie bezużyteczna”. „k = 1000” było używane w informatyce od lat 50. XX wieku. Pierwsze komputery były w rzeczywistości maszynami dziesiętnymi, a nie binarnymi. Szybkość pracy w sieci zawsze była mierzona jako wielokrotność 1000. „Służył dobrze przez 30 lat”? Naprawdę? Programiści narzekają na „k = 1024” od co najmniej 43 lat. en.wikipedia.org/wiki/Timeline_of_binary_prefixes
endolith
8

Jest poprawne i ma sens, aby ludzie techniczni używali 1024 = 1 K.

Dla użytkowników końcowych zwykle lepiej jest powiedzieć 1000 = 1k, ponieważ wszyscy są przyzwyczajeni do systemu liczbowego opartego na 10.

Problem polega na tym, gdzie narysować linię. Czasami osobom zajmującym się marketingiem lub reklamą tak naprawdę nie udaje się „tłumaczyć” ani dostosowywać danych technicznych i języka do użytkowników końcowych.

mit
źródło
13
Techniczni ludzie powinni wiedzieć, że 1024 bajty to tak naprawdę Kibibyte (KiB), ale wiedzą, że ludzie nie znają tego terminu .
paradroid
8
Kto powiedział, że to prawda? Kilo znaczyło 1000 od stuleci, więc IMO nigdy nie powinni go używać od 1024.
Bart van Heukelom
20
Bajt nie jest jednostką SI; KB oznacza „kilobel” (przyznane, jednostka, której nigdy nie chciałbyś używać, chyba że opisywałbyś dźwięk, jeśli w ogóle, wytwarzany przez Wielki Wybuch).
Wooble
10
@njd: C64 ma 65536 bajtów pamięci RAM. Zgodnie z konwencją rozmiar pamięci jest określany w kibiBajtach, szybkości przesyłania danych w kilobitach i pamięć masowa w bajtach dowolnych producentów, którzy myślą o teraz. Dyski twarde używają T, G, M i k na etykiecie, Windows zgłasza rozmiar w Ti, Gi, Mi i ki. A te dyskietki 1,44 MB? Nie są to 1,44 MB ani 1,44 MB, mają one 1,44 kilokibibajta. To 1440kiB lub 1'474'560 bajtów.
Trzeciego
5
Jednak warianty kiB itp. Są dość nowe. Nie sądzę, aby były one używane, gdy pojawił się ten problem, z pewnością - miałem wrażenie, że zrobiono je dokładnie, aby go rozwiązać!
Shinrai
3

Obwiniaj producentów półprzewodników (dostarczają nam tylko sprzęt binarny) [1]

Jeszcze lepiej: obwinianie samej logiki (logika binarna jest tylko najbardziej elementarną logiką).

Jeszcze lepiej: kogo winić za nieszczęsny system dziesiętny ?

Ma znacznie więcej wad niż system binarny. Kaszel opierał się na średniej liczbie palców u kaszlu gatunku ludzkiego

Oooo ...

[1] Chcę mój kwantowy komputer z trzema kubitami !!! Teraz!

sehe
źródło
29
Myślę, że przekonasz się, że średnia liczba palców jest mniejsza niż 10 </pedant>
Rory Alsop
1
@Rory: ^ to był dobry śmiech
Mehrdad
2
@Rory: „mniej” </pedant>. Albo to jest? Poczekaj chwilkę, aargh ...
zewnątrz
1

1024 nie można winić, jest to naprawdę bardzo dobra rzecz, ponieważ jest to powód, dla którego komputer (cyfrowy) może być tak szybki i tak wydajny jak obecnie. Ponieważ komputer używa tylko 2 wartości (0,1), usuwa z równania trudność i złożoność (niedokładność) systemu anologicznego.

Byłoby bardziej skomplikowane, gdybyśmy powiedzieli, że kilobajt to 1000 bitów, ponieważ 2 do jakiej mocy jest 1000? więc nawet 1 kilobajt byłby niedokładny, ponieważ będzie miał zmiennoprzecinkowe lub przybliżone wartości.

Ale w dużej mierze obwiniam marketing za sprzedaż 8 gigabajtów * i dodanie tego w małym druku

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

szkoda, tak samo jest z szybkością połączenia, twój dostawca usług internetowych mówi 1,5 Mb / s zamiast mówić ~ 150 kilobajtów. to po prostu bardzo mylące

Ibu
źródło
3
Mówiąc o tym, jak duży jest plik 15682 bitów lub jak szybko taki plik można przesłać przez sieć, potęgi 2 nie odgrywają żadnej roli. I w tym kontekście jest najwięcej zamieszania.
Bart van Heukelom
2
Ostatecznie plik jest przechowywany na stronach pamięci, które są wyrównane do granic mocy binarnej. Podczas wysyłania przez TCP rozmiar okna, w którym wysyłane są pakiety, jest wielokrotnością potęg dwóch. Kiedy plik jest przechowywany na dysku twardym, jest on przechowywany w blokach potęgi dwóch. Rozumiem, co mówisz, ale kilobajt = 1024 (lub co najmniej wielokrotność potęg dwóch) jest zbyt mocno zakorzeniony w obliczeniach.
FryGuy
1
Szczerze mówiąc, sieci zawsze używały bitów jako podstawy.
Synetech
1
Pierwsza dyskietka 5.25 "miała 109.375 bajtów i była reklamowana jako„ 109,4 Kbytes ". Sądzę, że zrobili to również ze złych powodów marketingowych? Myślisz, że bardziej logiczne byłoby zapisanie jej jako„ 106,8 KB "? I napędów taśm i procesora wszystkich prędkościach i prędkości modemu są mierzone w systemie dziesiętnym do nas oszukać proszę?.
endolit
1
@Ibu: różnica między 1 000 000 000 bajtów a 1 GB wynosi 0. Rzeczywiście, dlaczego producenci dyskietek złośliwie zwiększają swoje liczby, skoro różnica jest tak mała? Nie zrobiliby tego. Użyli 1000, ponieważ jest to logiczne, oczywiste i poprawne, a nie dlatego, że są częścią spisku mającego na celu oszukanie klientów. Z tego samego powodu producenci dysków twardych mierzą również w tysiącach lat od czasów MB.
endolith,
0

Jeśli weźmiesz pod uwagę, że liczby na komputerach są binarne, a 2 ^ 10 to 1024, ma to sens. O wiele łatwiej jest pracować z 1024 niż 1000, ponieważ można łatwo podzielić przez 1024, używając tylko matematyki liczb całkowitych i przesunięcia bitów . Dzielenie przez 1000 jest znacznie droższą operacją, która może wymagać matematyki zmiennoprzecinkowej.

Na przykład

bytes = 1 073 741 824
kilobytes = bytes >> 10 = 1 048 576
megabytes = kilobytes >> 10 = 1024
gigabytes = megabytes >> 10 = 1
Jo-Herman Haugholt
źródło
Naprawdę myślisz, że czas obliczeń jest istotny? Dlaczego więc komputery nie przetwarzają „km” jako „1024 m”, skoro tak trudno je przekonwertować?
endolith,
@endolith Tak, tak myślę, przynajmniej historycznie. Choć dziś może być nieistotny, we wczesnych dniach, kiedy każdy cykl procesora był na wagę złota, szybka i łatwa kalkulacja, która dała przyzwoitą odpowiedź, byłaby lepsza dla czegoś takiego. Zwłaszcza, jeśli ludzie wiedzą, że 1KB oznacza 1024 bajty.
Jo-Herman Haugholt