Jaka jest różnica między kibibajtem, kilobitem i kilobajtem?

45

To pytanie sprawiło ,że zastanawiałem się nad różnicami między tymi trzema sposobami pomiaru wielkości: kibibajt , kilobit i konwencjonalny kilobajt .

Rozumiem, że pomiary te mają różne zastosowania (szybkość przesyłania danych jest mierzona w bitach / s), ale nie jestem pewien, czy potrafię odróżnić Mb i MB od MiB.

Oto komentarz, odtworzony poniżej, zaczerpnięty z tej odpowiedzi ( moje podkreślenie ).

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ą 1,44 kilokibibitu. To 1440kiB lub 1'474'560 bajtów. - po trzecie

Czerwony i biały
źródło
12
W nadchodzących latach będzie zamieszanie. Na początku informatyki ludzie zauważyli, że zdecydowanie łatwiej jest pracować z komputerami o współczynniku 1024 niż 1000. Dlatego przez dziesięciolecia dla niestandardowej 1024 używany był (i wciąż bardzo często) przedrostek SI „kilo” i stał się on de facto standardem w przetwarzaniu. Tyle że niektórzy ludzie nadal używali SI 1000. Aby rozwiązać bałagan, „kibi” jest teraz oficjalnie zdefiniowane jako czynnik 1024 - ale przyszło o wiele za późno, aby łatwo przejść. Przez pewien czas „kilogram” będzie regularnie używany / nadużywany dla 1024 czynników.
Steve314,
Pomogłoby to w adopcji, gdyby nie wybrali prefiksów, które wydają się głupie; nawet akronim wymaga od kogoś „mentalnego aspiracji” tego słowa. Po prostu nigdy nie użyję „kibibajta” itp.
tgm1024,

Odpowiedzi:

63
1 KiB (Kibibyte) = 1,024 B (Bytes) (2^10 Bytes)
1 kb  (Kilobit)  =   125 B (Bytes) (10^3 Bits ÷ (8 bits / byte) = 125 B)
1 kB  (Kilobyte) = 1,000 B (Bytes) (10^3 Bytes)

Tak samo jest z dowolnym prefiksem SI; k(1x10 3 ), M(1x10 6 ), G(1x10 9 ), a zatem:

1 MiB (Mebibyte) = 1,048,576 B (Bytes) (2^20 Bytes)
1 Mb  (Megabit)  =   125,000 B (Bytes) (10^6 Bits ÷ (8 bits / byte) = 125,000 B)
1 MB  (Megabyte) = 1,000,000 B (Bytes) (10^6 Bytes)

Jedyne, które są nieco inne, to prefiksy binarne IEC (kibi / mebi / gibi itp.), Ponieważ znajdują się w bazie 2, a nie w bazie 10 (np. Wszystkie liczby są równe 2 coś zamiast 10 czegoś ). Wolę po prostu używać przedrostków SI, ponieważ uważam, że jest to o wiele łatwiejsze. Ponadto Kanada (mój kraj) korzysta z systemu metrycznego, więc jestem przyzwyczajony na przykład do 1kg = 1000g(lub 1k anything = 1000 base things). Żadne z nich nie jest złe ani słuszne; po prostu upewnij się, że wiesz, którego używasz i co to naprawdę oznacza.

Aby uspokoić komentujących:

1 Byte (B) = 2 nibbles = 8 bits (b)

Dlatego jeśli kiedykolwiek spojrzałeś na edytor szesnastkowy, wszystko jest podzielone na dwa znaki szesnastkowe; każdy znak szesnastkowy ma rozmiar skubka, a bajt ma dwa znaki. Na przykład:

198 (decimal) = C6 (hex) = 11000110 (bits)
krążyć
źródło
5
+1 Warto wspomnieć, że bajt zawiera 8 bitów.
paradroid
4
... i nie zapominaj, że dająca się zrozumieć część to cztery bity (lub pół bajtu)!
Linker3000
4
Może być również świadomy, że małe litery „b” są czasami używane niepoprawnie do skrótu „bajtów”. Widzę, że wiele miejsc po prostu używa „bitu” w rezygnacji, takich jak MB dla megabajtów i Mbit dla megabitów i całkowicie trzymaj się z dala od „b”.
James
4
Prefiks kilo to skrót k, a nie K.
garyjohn
1
@Redandwhite Nie, używają podstawy 10 do mierzenia pamięci, ale nasze komputery używają podstawy 2. To wyjaśnia rozbieżność między tym, co wydrukowano na pudełku, a tym, co pojawia się na komputerze. Na przykład 500GB (box) = 465.7GiB (computer)(i w ten sposób cię zdobywają).
squircle
9

Istnieje kilka podstawowych terminów, które są proste i łatwe do zrozumienia:

* A bit      (b)   is the smallest unit of data comprised of just {0,1}
* 1 nibble   (-)   = 4 bits (cutesy term with limited usage; mostly bitfields)
* 1 byte     (B)   = 8 bits (you could also say 2 nibbles, but that’s rare)

Aby przekonwertować między bitami i bajtami (z dowolnym prefiksem), wystarczy pomnożyć lub podzielić przez osiem; ładny i prosty.

Teraz sprawy stają się nieco bardziej skomplikowane, ponieważ istnieją dwa systemy pomiaru dużych grup danych: dziesiętny i binarny . Przez lata programiści i inżynierowie komputerowi używali tych samych terminów w obu przypadkach, ale zamieszanie w końcu wywołało pewne próby standaryzacji odpowiedniego zestawu prefiksów.

Każdy system używa podobnego zestawu prefiksów, które można zastosować do bitów lub bajtów. Wszystkie prefiksy zaczynają się tak samo w obu systemach, ale te dwójkowe brzmią jak baby-talk.

System dziesiętny to podstawa-10, do której większość ludzi jest przyzwyczajona i wygodna w użyciu, ponieważ mamy 10 palców. System binarny to podstawa 2, do której większość komputerów jest przyzwyczajona i wygodna w użyciu, ponieważ mają dwa stany napięcia.

System dziesiętny jest oczywisty i łatwy w użyciu dla większości ludzi (wystarczy pomnożyć w naszych głowach). Każdy prefiks wzrasta o 1000 (powodem jest zupełnie inna sprawa).

System binarny jest znacznie trudniejszy w użyciu dla większości osób niebędących komputerami, a nawet programiści często nie potrafią umieścić w swoich głowach dowolnie dużych liczb. Niemniej jednak jest to prosta kwestia bycia wielokrotnością dwóch. Każdy prefiks rośnie o 1024. Jedno „K” wynosi 1024, ponieważ jest to najbliższa potęga dwóch do dziesiętnej „k” równej 1000 (może to być prawda w tym momencie, ale różnica gwałtownie rośnie z każdym kolejnym prefiksem).

Liczby są takie same dla bitów i bajtów o tym samym prefiksie.

* Decimal:
* 1 kilobyte (kB)  = 1,000 B  = 1,000^1 B           1,000 B
* 1 megabyte (MB)  = 1,000 KB = 1,000^2 B =     1,000,000 B
* 1 gigabyte (GB)  = 1,000 MB = 1,000^3 B = 1,000,000,000 B

* 1 kilobit  (kb)  = 1,000 b  = 1,000^1 b           1,000 b
* 1 megabit  (Mb)  = 1,000 Kb = 1,000^2 b =     1,000,000 b
* 1 gigabit  (Gb)  = 1,000 Mb = 1,000^3 b = 1,000,000,000 b

* …and so on, just like with normal Metric units meters, liters, etc.
* each successive prefix is the previous one multiplied by 1,000



* Binary:
* 1 kibibyte (KiB) = 1,024 B  = 1,024^1 B           1,024 B
* 1 mebibyte (MiB) = 1,024 KB = 1,024^2 B =     1,048,576 B
* 1 gibibyte (GiB) = 1,024 MB = 1,024^3 B = 1,073,741,824 B

* 1 kibibit  (Kib) = 1,024 b  = 1,024^1 b =         1,024 b
* 1 mebibit  (Mib) = 1,024 Kb = 1,024^2 b =     1,048,576 b
* 1 gibibit  (Gib) = 1,024 Mb = 1,024^3 b = 1,073,741,824 b

* …and so on, using similar prefixes as Metric, but with funny, ebi’s and ibi’s
* each successive prefix is the previous one multiplied by 1,024

Zauważ, że różnica między systemem dziesiętnym a binarnym zaczyna się od małego (przy 1K, mają tylko 24 bajty lub 2,4% od siebie), ale rośnie z każdym poziomem (przy 1G, są> 70MiB lub 6,9% od siebie).

Zasadniczo urządzenia sprzętowe używają jednostek dziesiętnych (bitów lub bajtów), podczas gdy oprogramowanie korzysta z wartości binarnych (zwykle bajtów).

To jest powód, dla którego niektórzy producenci, szczególnie dyski MFG, lubią używać jednostek dziesiętnych, ponieważ sprawia, że ​​rozmiar dysku wydaje się większy, ale użytkownicy są sfrustrowani, gdy stwierdzą, że ma mniej niż się spodziewali, widząc Windows i in. glin. zgłoś rozmiar w formacie binarnym. Na przykład 500 GB = 476GiB, więc mimo że dysk zawiera 500 GB i jest oznaczony jako taki, Mój komputer wyświetla binarne 476GiB (ale jako „476GB”), więc użytkownicy zastanawiają się, dokąd poszły pozostałe 23 GB. (Producenci dysków często dodają przypis do pakietów, który mówi, że „sformatowany rozmiar jest mniejszy”, co jest mylące, ponieważ narzut systemu plików jest niczym w porównaniu z różnicą między jednostkami dziesiętnymi i binarnymi).

Urządzenia sieciowe często używają bitów zamiast bajtów ze względów historycznych, a dostawcy usług internetowych często lubią reklamować się za pomocą bitów, ponieważ sprawia, że ​​oferowana przez nich prędkość połączeń jest większa: 12 Mb / s zamiast zaledwie 1,5 Mb / s. Często nawet miksują i dopasowują bity i bajty oraz dziesiętne i binarne. Na przykład możesz zasubskrybować to, co ISP nazywa linią „12 MB / s”, myśląc, że otrzymujesz 12 Mb / s, ale w rzeczywistości tylko 1,43 Mb / s (12 000 000/8/1024/1024).

Synetech
źródło
2
@endolith, nieprawda. Po pierwsze, rzeczywiście istnieją, a przynajmniej byli w przeszłości, niektórzy producenci napędów, którzy używają jednostek binarnych. Po drugie, nie trafiłeś w sedno. Gdyby chcieli, mogliby umieścić 73 400 320 na dysku, który w rzeczywistości byłby 70 M (i) B zamiast 66. Używają 70 000 000, ponieważ jest to tańsze w użyciu i nadal nazywają to „70 MB”. To proste cięcie narożników i robi to wielu producentów. Spójrz na jedzenie; zamiast 500G wstawią 454G, ponieważ jest to 1LB. Co gorsza, zamiast 454G, włożą 450G i winią za brakujące 4G zaokrąglanie. To nie jest spisek, to cięcie kosztów.
Synetech
1
Podaj przykłady producentów dysków twardych używających jednostek binarnych.
endolith
1
@endolith, to nie jest strona historii. Może kiedy robię wiosenne porządki i wykopuję stare dyski, opublikuję zdjęcie lub coś takiego. W przeciwnym razie możesz przejść do muzeum historii komputerów lub sklepu komputerowego typu mama i pop i znaleźć stare dyski twarde, jeśli jest to dla Ciebie ważne. W dzisiejszych czasach większość plików mfg celowo używa etykiet, które sprawiają, że wszystko brzmi lepiej. Tak jak powiedziałem, mogliby zrobić 73 400 320 bajtów na dysk o pojemności 70 MB, gdyby chcieli, ale po co męczyć się, kiedy mogą taniej i technicznie nazywają go 70 MB? Ponownie, to nie jest spisek, to zwykła zwodnicza marketingowa.
Synetech
2
Przeglądałem już archiwa bitsavers i wszystkie znalezione przeze mnie przykłady są dziesiętne. Ten mit, który w pewnym momencie zmusza producentów do zmiany binarnej na dziesiętną w celu oszukania klientów, jest szalony. Nie zostały napisane przez działy marketingu, ale przez inżynierów używających standardowych jednostek, z których korzystają inżynierowie. Logiczne i rozsądne jest nazywanie 70 000 000 bajtów dysku IBM 3340 „70 MB”. Właśnie to zawsze oznaczało „mega-” i tego oczekiwali użytkownicy. Nazywanie go „66 MB” w niektórych miejscach i „68 359 KB” w innych miejscach, tak jak robi to Microsoft Windows, jest szalone.
endolith
1
@endolith, nikt nie powiedział, że przestawili się na dziesiętne, aby oszukać, tylko że celowo sprzedają je w ten sposób, nawet jeśli wiedzą o zamieszaniu i mogą sprawić, że dysk będzie wynosił 73 400 320 bajtów zamiast 70 000 000, co nie jest zaokrągloną liczbą w komputerach. Jeśli chodzi o twoje stwierdzenie „zawsze”, to znaczy, że jest już wątek o tym, kiedy jednostki binarne weszły w życie i to było dawno temu, na pewno zanim komputery stały się produktami konsumenckimi.
Synetech,
-4

Niektóre odpowiedzi nie są dokładne.

Zróbmy najpierw kilka notatek:

Przedrostek „kilo” oznacza 1 000. Przedrostek „kilo” oznacza cokolwiek 1 000 tego elementu. To samo dotyczy „mega” lub miliona, „giga” lub miliarda, „tera” lub tryliona i tak dalej.

Powodem 1 024 zamiast zwykłego posiadania 1000 jest sposób, w jaki działa arytmetyka binarna. Binarny, jak sama nazwa wskazuje, jest systemem bazowym 2 (ma 2 cyfry: 0, 1). Może wykonywać arytmetykę tylko z dwiema cyframi, w przeciwieństwie do podstawowego systemu 10, którego używamy na co dzień (0, 1, 2 ... 9), który ma dziesięć cyfr.

Aby dostać się do liczby 1000 ( kilogramów ) za pomocą arytmetyki binarnej, konieczne jest wykonanie obliczeń zmiennoprzecinkowych. Oznacza to, że cyfra binarna musi być przenoszona przy każdej operacji, aż do osiągnięcia 1000. W systemie base 10, 1000 = 10 3 (zawsze podbijasz 10 do potęgi w bazie 10), bardzo łatwe i szybkie obliczenia dla komputera bez „resztek”, ale w systemie base 2 jest to nie jest możliwe podniesienie 2 (zawsze podnosisz 2 do potęgi w podstawie 2) do dodatniej liczby całkowitej, aby uzyskać 1 000. Należy użyć operacji zmiennoprzecinkowej lub długiego dodawania, a jej wykonanie zajmuje więcej czasu niż obliczenie liczby całkowitej 2 10 = 1024.

Być może zauważyłeś, że 2 10 = 1 024 jest kusząco zbliżone do 1 000, a 1 024 do 1 znacząca liczba to 1 000 (bardzo dobre przybliżenie), a wstecz, gdy szybkość procesora była niska jak stary pies, a pamięć była bardzo ograniczona , było to całkiem przyzwoite przybliżenie i bardzo łatwe w obsłudze, nie mówiąc już o szybkim wykonaniu.

Z tego powodu są to określenia „kilo”, „mega”, „giga” itd., Przedrostki przyklejone do nieprecyzyjnych liczb (1 024, 2 048, 4 096 itd.). Nigdy nie miały być dokładnymi liczbami, były binarnymi przybliżeniami liczb podstawowych 10. Po prostu powstały jako żargonowe słowa używane przez ludzi „technicznych”.

Aby jeszcze bardziej skomplikować sprawę, JEDEC stworzył własne standardy dla jednostek wykorzystywanych w półprzewodnikowych obwodach pamięci. Porównajmy niektóre jednostki JEDEC z jednostkami SI (standardowe międzynarodowe):

Kb = Kilobit (JEDEC, 1 024 bity. Zwróć uwagę na wielkie litery „K” i małe litery „b”)
kB = kilobit (SI, 1000 bitów. Zwróć uwagę na małe litery „k” i wielkie litery „B”)

b = bit (JEDEC, zwróć uwagę na małe litery „b”)
b = ??? (SI nie definiuje słowa „bit”, więc jego użycie może być dowolne)

B = bajt (JEDEC, 8 bitów. Zwróć uwagę na wielkie litery „B”)
B = ???? (SI nie definiuje słowa „bajt”, a „B” jest używany dla „Bel” [jak w DeciBel])

KB = kilobajt (JEDEC, 1 024 bajtów. Zwróć uwagę na wielkie litery „K” i „B”)
kb = kilobajt (SI, 1 000 bajtów. Zwróć uwagę na użycie małych liter „k” i małych liter „B”)

Chodzi o to, że różne miejsca używają różnych prefiksów z różnymi definicjami. Nie ma twardej i szybkiej reguły, której należy użyć, ale należy zachować zgodność z tą, której używasz.

Z powodu głosowania w dół, pozwól mi wyjaśnić, dlaczego nie możesz zarobić 1000 w systemie binarnym, podnosząc go do dowolnej dodatniej liczby całkowitej.

System binarny:

+----------------------------------------------------------------------------------+
| 1 024ths | 512ths | 256ths | 128ths | 64ths | 32nds | 16ths | 8ths | 4s | 2s | 0 |
+-----------------------------------------------------------------------------------

Zauważ, że w systemie binarnym kolumny podwajają się za każdym razem. Jest to w przeciwieństwie do systemu podstawowego 10, który zwiększa się o 10 za każdym razem:

+--------------------------------------------------------------------------+
| 1 000 000ths | 100 000ths | 10 000ths | 1 000ths | 100ths | 10s | 1s | 0 |
+--------------------------------------------------------------------------+

Pierwsze 10 mocy w systemie binarnym (baza 2) to:

2 0 = 1
2 1 = 2
2 2 = 4
2 3 = 8
2 4 = 16
2 5 = 32
2 6 = 64
2 7 = 128
2 8 = 256
2 9 = 512
2 10 = 1024

Jak widać, nie można podnieść liczby binarnej 2 do dodatniej liczby całkowitej, aby osiągnąć 1000.

użytkownik3005790
źródło
3
Uważam, że nie ma racji, twierdząc, że liczba 1000 potrzebuje arytmetyki zmiennoprzecinkowej. Możesz reprezentować dowolną liczbę naturalną za pomocą dowolnego systemu numeracji. W rzeczywistości binarny odpowiednik 1000 to 1111101000 .
Doktoro Reichard
Doktoro, pamiętaj, że pracujemy w systemie binarnym lub w bazie 2, więc w rzeczywistości to ty jesteś tym, który jest niepoprawny. Oto pierwsze 10 potęg 2 z binarnie (podstawa 2): 2 ^ 0 = 1. 2 ^ 1 = 2. 2 ^ 3 = 4. 2 ^ 4 = 8. 2 ^ 5 = 16. 2 ^ 6 = 64 . 2 ^ 7 = 128. 2 ^ 8 = 256. 2 ^ 9 = 512. 2 ^ 10 = 1024. Zauważ, że odpowiedź jest wykładnicza, podwaja się za każdym razem, gdy zwiększasz wykładnik o 1. Więc widzisz, że nie jest możliwe podniesienie liczby binarnej 2 (BINARY 2 ... a nie dziesiętna podstawa 2) do dowolnej dodatniej liczby całkowitej, aby uzyskać 1 000. Mimo to doceniam głos oddany.
user3005790
To nie wyjaśnia, że ​​różni się między bitem a bajtem. W rzeczywistości istnieje „twarda, szybka reguła” 1 Kb to tysiąc bitów 1KB to tysiąc bajtów. Istnieje ogromna różnica. 8 Kb to 1 KB.
Ramhound
3
Chociaż to stwierdzenie jest poprawne, nadal nie musisz wykonywać żadnej arytmetyki zmiennoprzecinkowej. Rozumiesz potęgi 2, więc możesz również zrozumieć, że 1111101000 = 2 ^ 9 + 2 ^ 8 + 2 ^ 7 + 2 ^ 6 + 2 ^ 5 + 2 ^ 3 = 1000.
Doktoro Reichard
1
Nie wierzę, że „nigdy nie miały być dokładnymi liczbami, były binarnymi przybliżeniami liczb podstawowych 10” jest prawdą; Myślę, że to tylko wynik sprzętu, który był (jest) ograniczony do przechowywania zer i jedynek oraz adresowania sprzętowego za pomocą rejestrów binarnych. Oba są bazą 2; wydaje mi się, że w ogóle nie jest to związane z przybliżeniem obliczeń podstawy 10. Nie rozumiem też, o czym mówisz, jeśli chodzi o obliczenia. To nie jest tak, że dane wyjściowe komputera pokazałyby 1024, gdzie faktycznie miały pokazywać 1000, lub 1000, gdy wewnętrznie byłoby 1024. Jakie obliczenia masz na myśli?
Arjan