Care este diferența dintre un kilobyte și un kibibyte?


Răspunsul 1:

Această confuzie provine din denumirea Windows. Dar să revenim la asta mai târziu.

 

Un kilobyte folosește prefixul kilo- S.I., care înseamnă de 1000 de ori ceva. Adică 1 KB înseamnă 1000 de octeți. Un kibibyte folosește prefixul kibi- care nu sunt sigur dacă este sau nu S.I. kibi- înseamnă de 1024 ori ceva, deci 1 KiB este 1024 octeți.

 

Windows numește kibibyte ca kilobyte pentru a împiedica utilizatorul să facă față prefixului kibi-. Dar de ce au ales această scară în loc să facă lucruri Linux, sigur nu știu! Adică, HDD-ul meu de 320 GB (numărul comercial) este de 298 GB (de fapt, GiB) pe Windows și 319. ceva de pe Linux. Adică, wtf este greșit cu Microsoft ?!


Răspunsul 2:

Răspuns scurt: „kibi-” înseamnă 1024 tot timpul. „Kilo-” înseamnă „1000” mare parte a timpului, dar există potențial de confuzie când ajungeți la intersecția de stocare / rețea / și memoria principală, când „kilo-” înseamnă uneori „1024” și asta se datorează în mare parte utilizării istorice a limbajului. RAM este de obicei descrisă cu utilizarea binară: un „kilobyte de RAM” este de 1024 B, dar un kilobyte HD este de obicei 1000 B, dar unii (majoritatea?) Sistem de operare utilizează utilizările binare atunci când se referă la lucruri precum dimensiunile fișierelor și gratuit spaţiu.

Historically,thecomputerscientistsbuildinghardwareandmemoryfounditeasiestandmostconvenienttocountthingsinbinarysincetheywereactuallyusingbinaryatalowlevel.Since210=1024isprettycloseto[math]103[/math],thefolkscreatingthehardware/memoryaddressingadoptedthekiloprefixtomean1024bytesandmegatobe[math]220[/math]=1,048,576isstillprettycloseto[math]103[/math].Historically, the computer scientists building hardware and memory found it easiest and most convenient to count things in binary since they were actually using binary at a low level. Since 2^{10} =1024 is pretty close to [math]10^{3}[/math], the folks creating the hardware/memory addressing adopted the “kilo-” prefix to mean 1024 bytes and “mega” to be [math]2^{20}[/math] =1,048,576 is still pretty close to [math]10^{3}[/math].

Alți oameni de informatică care lucrează în alte secțiuni ale domeniului (de exemplu, crearea de rețele și stocarea) au utilizat în mare parte definiția inițială a SI, unde „kilo-” însemna 1.000 și „mega-” însemna 1.000.000. Un hard disk care a fost anunțat ca „1GB” a stocat 1.000.000.000 de octeți.

Inthelate1990s,thebinomenclaturewasformallyintroducedbytheInternationalElectrotechnicalCommissiontoprovideawaytogetaroundtheambiguity.Usingkibibyte/KiB,mebibyte/MiB,gibibyte/GiB,etc.wouldunambiguouslyrefertothe210,[math]220[/math],[math]230[/math],etc.TheseprefixesareapartofofficialSIdefinitionsnow,butIdontthinkanyoneusesthebinaryprefixesoutsideofcomputerrelatedcontexts(Mycaruses38Lper100kibimetersjusthasprobablyneverbeensaid.)In the late 1990’s, the “-bi-” nomenclature was formally introduced by the International Electrotechnical Commission to provide a way to get around the ambiguity. Using kibibyte/KiB, mebibyte/MiB, gibibyte/GiB, etc. would unambiguously refer to the 2^{10}, [math]2^{20}[/math] ,[math]2^{30}[/math], etc. These prefixes are a part of official SI definitions now, but I don’t think anyone uses the binary prefixes outside of computer-related contexts (“My car uses 38 L per 100 kibimeters” just has probably never been said.)

Probleme suplimentare apar atunci când rețeaua vine în discuție. În mod tradițional, oamenii folosesc baza 10 atunci când vorbesc despre „biți” („b”) și nu „octeți” („B”) pe care îi vedeți în majoritatea celorlalte domenii. De asemenea, majoritatea protocoalelor de rețea, inclusiv umplerea (biți de pornire și oprire) și coduri de corectare / detectare a erorilor (de exemplu biți de paritate). Adică, pentru a transfera un singur octet (8 biți) de date, datele trimise de-a lungul firului ar putea fi de 11 biți sau mai mult. Deci, de ex. o conexiune de rețea de 1 Gb / s ar putea trimite 1.000.000.000 de biți de-a lungul cablului în fiecare secundă, dar asta nu se transformă curat în 125.000.000 GB / s de transfer efectiv de date chiar și în circumstanțe optime.

Whenthemarketingpeoplegetinvolved,itgetsconfusingtoo.Thebase10unitssoundbetterthanthebinaryunits.Ievenrememberseeingadvertisementsinthe1980sand90swheretheycombinedtheunitsinwaysthatwereespeciallyconfusing:e.g.amegabytebeing1,024,000bytes(i.e210103.)Fortunately,thatkindofusagewasrare.When the marketing people get involved, it gets confusing too. The base-10 units sound better than the binary units. I even remember seeing advertisements in the 1980′s and 90’s where they combined the units in ways that were especially confusing: e.g. a “megabyte” being 1,024,000 bytes (i.e 2^{10}*10^{3}.) Fortunately, that kind of usage was rare.

Unele instrumente unix vă permit să alegeți formatele de ieșire. De exemplu. citarea paginii de utilizare pentru instrumentul „df” (raportare utilizare a spațiului de disc pe sistemul de fișiere):

-h, - dimensiuni de citire umană în format citibil uman (de exemplu, 1K 234M 2G) -H, - similar, dar utilizați puteri de 1000 nu 1024