Bir kibibit, bir kilobit ve bir kilobayt arasındaki fark nedir?


45

Bu soru , bu üç ölçüm boyutu arasındaki farkları merak etmeme neden oldu : bir kibibit , bir kilobit ve geleneksel kilobayt .

Bu ölçümlerin farklı kullanımları olduğunu biliyorum (veri aktarım hızı bit / sn cinsinden ölçülür), ancak Mb ve MB ve MiB arasındaki farkı söyleyebilir miyim emin değilim.

Aşağıda, bu cevaptan alınmış, tekrar üretilmiş bir yorum ( benimki vurgusu ).

C64, 65536 bayt RAM'e sahip. Geleneksel olarak, bellek boyutu belirtilen kibibayt , veri aktarım hızları kilobit -üreticileri-düşünmek ne olursa olsun-of-şimdi- içinde ve yığın depolama Bayt . Sabit sürücüler etiket üzerinde T, G, M ve k kullanır, Windows boyutu Ti , Gi , Mi ve ki cinsinden bildirir . Ve bu 1,44 MB floplar? Bunlar ne 1.44MB ne de 1.44MiB'dir, bunlar 1.44 kilokibibittir. Bu 1440kiB ya da 1.474.560 bayt. - Üçüncü


12
Gelecek yıllar için karışıklık olacak. Bilgisayarların ilk günlerinde, insanlar bilgisayarlarda 1000 yerine 1024 faktörlerle çalışmanın daha kolay olduğunu fark ettiler. Bu nedenle, onlarca yıl boyunca, standart olmayan 1024 için standart SI öneki "kilo" kullanıldı (ve hala çok sık kullanılır) ve hesaplamada fiili bir standart haline geldi. Bunun dışında bazı insanlar yine de SI 1000 kullandı. Dağınıklığı çözmek için, "kibi" resmi olarak 1024 faktörü olarak tanımlandı - ancak kolay bir geçiş için çok geç geldi. "kilo" bir süredir 1024 faktör için düzenli olarak kullanılacak / kötüye kullanılacak.
Steve314

Aptalca ses çıkaran ön ekler seçmeseydi, evlat edinmeye yardımcı olurdu; bir kısaltma bile birisinin sözcüğü “zihinsel olarak aspire etmesini” gerektirir. Ben sadece asla "kibibyte", vb.
Kullanmayacağım

Yanıtlar:


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)

Herhangi bir SI öneki ile aynı şekildedir; k(1x10 3 ), M(1x10 6 ), G(1x10 9 ), bu yüzden, uzatma:

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)

Onlar tabanı 2'de olduğu için biraz farklı sadece onlar değil, taban 10 (örneğin tüm sayılar 2 eşit, IEC İkili Önekleri (Kibi / MEBI / gibi vs.) olan bir şeyi yerine 10 şey ). Sadece SI öneklerini kullanmayı tercih ediyorum çünkü daha kolay buluyorum. Artı, Kanada (ülkem) metrik sistemi kullanıyor, bu yüzden örneğin 1kg = 1000g(veya 1k anything = 1000 base things) alışkınım . Bunların hiçbiri yanlış veya doğru değil; sadece hangisini kullandığınızı ve gerçekte neye eşit olduğunu bildiğinizden emin olun.

Yorumcuları yatıştırmak için:

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

Bu yüzden, eğer bir hex editörüne bir göz attıysanız, her şey iki onaltılık karaktere bölünür; Her onaltılık karakter bir ucun büyüklüğüdür ve iki ila bir bayt vardır. Örneğin:

198 (decimal) = C6 (hex) = 11000110 (bits)

5
+1 Bir baytta 8 bit bulunduğundan bahsetmek faydalı olabilir.
paradroid

4
... ve bir naylonun dört bit (veya yarım bayt) olduğunu unutmayın!
Linker3000

4
Ayrıca, "b" küçük harfinin bazen "byte" ı kısaltmak için yanlış kullanıldığını unutmayın. Megabayt için MB, megabit için Mbit gibi kısaltmalarda sadece "bit" i kullandığımı ve tamamen "b" den uzak kaldıklarını gördüm.
James

4
Önek kilo kısaltılır k, K değil.
garyjohn

1
@Redandwhite Hayır, depolarını ölçmek için 10 tabanını kullanırlar, ancak bilgisayarlarımız 2 tabanını kullanır. Bu, kutuda basılanlarla bilgisayarda gösterilenler arasındaki tutarsızlığı açıklar. Örneğin, 500GB (box) = 465.7GiB (computer)(ve bu sizi nasıl yakaladıkları).
sincap

9

Basit ve anlaşılması kolay birkaç temel terim vardır:

* 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)

Bitler ve baytlar arasında (herhangi bir önek ile) dönüşüm yapmak için, sadece çoklu veya sekize bölün; güzel ve basit.

Şimdi, işler biraz daha karmaşıklaşıyor çünkü büyük veri gruplarını ölçen iki sistem var: ondalık ve ikili . Yıllar boyunca, bilgisayar programcıları ve mühendisleri her ikisi için de aynı terimleri kullandılar, ancak karışıklık sonunda uygun bir önek kümesini standartlaştırma girişimlerini tetikledi.

Her sistem, bit veya baytlara uygulanabilen benzer bir önek kümesi kullanır. Her önek her iki sistemde de aynı şekilde başlar, ancak ikili olanlar bundan sonra bebek konuşması gibi ses çıkarır.

Ondalık sistem, çoğu insanın alışkın ve rahat kullandığı taban-10'dur çünkü 10 parmağımız var. İkili sistem, çoğu bilgisayarın alışkın ve rahat kullandığı baz-2'dir, çünkü iki voltaj durumları vardır.

Ondalık sistem çoğu insan için açık ve kullanımı kolaydır (kafalarımızda çoğalacak kadar basittir). Her önek 1000 kadar artar (bunun nedeni tamamen farklı bir konudur).

İkili sistem, çoğu bilgisayar kullanmayan insanın kullanması için çok daha zordur ve programcılar bile kafalarında keyfi olarak çok sayıda sayı yapamazlar. Bununla birlikte, bu iki katın olması basit bir mesele. Her önek 1.024'e kadar çıkar. Bir “K” 1.024'dür, çünkü bu ikisinin 1000'in “k” değerine en yakın gücüdür (bu, bu noktada doğru olabilir, ancak her art arda gelen önekle fark hızla artar).

Sayılar, aynı öneki olan bit ve baytlar için aynıdır.

* 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

Ondalık ve ikili sistem arasındaki farkın küçük başladığına dikkat edin (1K'da, sadece 24 bayt veya% 2,4 ayrı), ancak her seviyede büyür (1G'de> 70MiB veya% 6,9'dur).

Genel bir kural olarak, donanım aygıtları yazılım ikili (genellikle bayt) kullanırken ondalık birimler (bit veya bayt) kullanırlar.

Bu nedenle, bazı üreticilerin, özellikle de mfgs sürücülerini ondalık birimler kullanmak istemeleri nedeni budur, çünkü sürücü boyutunun sesini daha büyük kılar, ancak kullanıcılar Windows et. ark. boyutu binary olarak bildir. Örneğin, 500GB = 476GiB, sürücü 500 GB içermek için yapılmış ve etiketli iken, Bilgisayarım 476GiB (ancak “476GB” olarak) ikili dosyasını görüntüler, böylece kullanıcılar diğer 23GB'nin nereye gittiğini merak eder. (Sürücü üreticileri genellikle “biçimlendirilmiş boyutun daha az olduğunu” belirten paketlere bir dipnot eklerler, çünkü dosya sistemi ek yükü ondalık ve ikili birimler arasındaki farka kıyasla hiçbir şey değildir).

Ağ aygıtları genellikle geçmiş nedenlerden dolayı bayt yerine bit kullanır ve ISS'ler genellikle bit kullanarak reklam vermeyi severler çünkü sundukları bağlantıların hızını daha büyük hale getirir: sadece 1.5MiBps yerine 12Mibps. Sık sık bile bit ve bayt ve ondalık ve ikili karışımı ve maç. Örneğin, ISS'nin “12MB / sn” hat dediği şeye abone olabilirsiniz, 12MiBps aldığınızı düşünebilirsiniz, ancak yalnızca 1.43MiBps (12.000.000 / 8/1024/1024) aldığınızı düşünebilirsiniz.


2
@endolith, doğru değil. Her şeyden önce, ikili birimler kullanan bazı tahrik üreticileri gerçekten ya da en azından geçmişte vardı. İkincisi, noktayı kaçırdınız. İsteselerdi, sürücüye 73.400.320 koyabilirlerdi ki bu, 66 yerine 70M (i) B olurdu. 70.000.000 kullanıyorlardı, çünkü bunu kullanmak daha ucuz ve hala “70MB” diyorlar. Basit kesme köşeleri ve birçok üretici bunu yapıyor. Yiyeceklere bak; 500G yerine 454G koyarlar çünkü 1LB'ye eşittir. Daha da kötüsü, 454G yerine 450G koyacaklar ve 4G'yi de yuvarlayarak suçlayacaklar. Bu bir komplo değil, maliyet düşürücü.
Synetech

1
Lütfen ikili üniteler kullanan bazı sabit sürücü üreticilerinden örnekler verin.
Endolit

1
@endolith, bu bir tarih sitesi değil. Belki bahar temizliği yaptığımda ve eski sürücüleri kazdığımda, bir fotoğraf veya başka bir şey gönderirim. Aksi takdirde, bir bilgisayar tarihi müzesine ya da ana bilgisayar dükkanına gidebilir ve sizin için önemliyse bazı eski sabit diskleri bulabilirsiniz. Bugünlerde çoğu mfgs bilerek sesleri daha büyük kılan etiketler kullanıyor. Dediğim gibi, onlar olabilir o 73.400.320 Onlar isterse bir 70MB sürüşü yapma bayt yapmak, ama neden ne zaman onlar ucuz dışarı rahatsız ve teknik olarak hala 70MB diyoruz? Yine, bu bir komplo değil, ortak pazarlama aldatmacası.
Synetech

2
Zaten bitsavers arşivlerine baktım ve bulduğum tüm örnekler ondalık. Tahrik üreticilerinin bir noktada müşterileri aldatmak için ikiliden ondalık basamağa geçiş yaptığı efsanesi fındıktır. Pazarlama departmanları tarafından değil, mühendislerin kullandığı standart birimleri kullanan mühendisler tarafından yazılmıştır. Bu, 70.000.000 bayt IBM 3340 disk "70 MB" aramak mantıklı ve akıllıca. '' Mega '' daima bunu kastediyordu ve kullanıcıların beklediği de buydu. Bazı yerlerde "66 MB" ve Microsoft Windows gibi diğer yerlerde "68,359 KB" olarak adlandırmak çılgınca.
Endolit

1
@endolith, kimse onlar söyledi anahtarlamalı onlar karışıklık hakkında bildiğimiz halde kasten bu şekilde onları pazarlamak sadece, aldatmak onluya ve olabilir sürücü 73400320 olan yerine 70.000.000 bayt yapmak değil bilgisayarlar yuvarlak sayı. “Her zaman” anlamına geldiğine dair ifadenize gelince, burada ikili ünitelerin ne zaman kullanılmaya başlandığı ve zaten bilgisayarlar tüketici ürünleri haline gelmeden çok uzun zaman önceydi.
Synetech

-4

Cevapların bazıları kesin değil.

İlk önce bazı notlar yapalım:

"Kilo" öneki 1 000 anlamına gelir. "Kilo" önündeki herhangi bir şey için bu maddenin 1 000 anlamına gelir. Aynısı "mega" veya milyon, "giga" veya milyar, "tera" veya trilyon vb. İçin de geçerlidir.

1 024'ün basitçe 1 000 yerine varlığının sebebi, ikili aritmetik işlemlerin çalışma şeklidir. İkili, adından da anlaşılacağı gibi, temel 2 sistemidir (2 basamağa sahiptir: 0, 1). Günlük olarak kullandığımız 10 taban sisteminin (0, 1, 2 ... 9) aksine, on basamak olan yalnızca iki basamaklı aritmetik işlem yapabilir.

İkili aritmetik kullanarak 1 000 ( kilo ) sayısına ulaşmak için bir kayan nokta hesaplaması yapmak gerekir. Bu, her işlem için 1000'e ulaşana kadar ikili bir rakamın taşınması gerektiği anlamına gelir. Temel 10 sisteminde, 1 000 = 10 3 (her zaman 10'u temel 10'daki bir güce yükseltirsiniz), bir bilgisayarın "geri kalan" olmadan gerçekleştirmesi için çok kolay ve hızlı bir hesaplamadır, ancak temel 2 sisteminde 2'yi yükseltmek mümkün değildir (her zaman 2'yi 2 seviyesindeki bir güce yükseltin) 1000 almak için pozitif bir tamsayıya getirin. Bir kayan nokta işlemi veya uzun bir ekleme kullanılmalıdır ve bu tamsayı hesaplamasından daha fazla zaman alır 2 10 = 1024.

2 10 = 1 024'ün cazip bir şekilde 1 000'e ve 1024 - 1'e önemli bir rakamın 1 000 (çok iyi bir yaklaşım) olduğunu ve CPU hızı eski bir köpek gibi yavaş olduğunda ve hafızanın çok sınırlı olduğunu fark etmiş olabilirsiniz. , bu oldukça iyi bir yaklaşımdı ve kullanımı çok kolaydı, yürütmek için hızlıca bahsetmek değil.

Bu nedenle "kilo", "mega", "giga" vb. Terimlerle ilgili terimler, kesin olmayan rakamlarla (1 024, 2 048, 4 096, vb.) Sıkışmış öneklerdir. Asla tam sayılar olmaları istenmedi, 10 baz sayısının ikili yaklaşımıydı. Onlar basitçe “teknoloji” insanların kullandığı jargon kelimeleri olarak ortaya çıktılar.

Sorunları daha da karmaşık hale getirmek için, JEDEC yarı iletken bellek devrelerinde kullanılan birimler için kendi standartlarını oluşturmuştur. Bazı JEDEC birimlerini SI (standart uluslararası) birimlerle karşılaştıralım:

Kb = Kilobit (JEDEC, 1024 bit. Büyük harf 'K' ve küçük harf 'b'
notu ) kB = kiloBit (SI, 1 000 bit. Küçük harf 'k' ve büyük harf 'B' notu)

b = bit (JEDEC, küçük harf 'b' ye dikkat edin)
b = ??? (SI 'bit' kelimesini tanımlamıyor, bu yüzden kullanımı isteğe bağlı olabilir)

B = bayt (JEDEC, 8 bit. Büyük harf 'B' değerini not alın)
B = ???? (SI, "bayt" kelimesini tanımlamaz ve "B", "Bel" için [DeciBel'deki gibi] kullanılır) tanımlamaz.

KB = kilobayt (JEDEC, 1024 bayt. Büyük harf 'K' ve 'B'
notunu ) kb = kilobayt (SI, 1 000 bayt. Küçük harf 'k' ve küçük harf 'B' kullanımına dikkat edin)

Mesele şu ki, farklı yerler farklı tanımlarda farklı önekler kullanıyor. Hangisini kullanmanız gerektiği konusunda kesin ve hızlı bir kural yoktur, ancak kullandığınızla tutarlı olun.

Aşağı oylama nedeniyle, neden herhangi bir pozitif tamsayıya yükselterek 1000'de ikili yapamadığınızı açıklamama izin verin.

İkili sistem:

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

İkili sistemde, sütunların her seferinde iki katına dikkat edin. Bu, her seferinde 10 oranında artan taban 10 sisteminin aksine:

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

İkili diskteki ilk 10 güç (temel 2):

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 = 10 024

Gördüğünüz gibi, ikiliyi 2, 000'a ulaşmak için herhangi bir pozitif tamsayıya yükseltmek mümkün değildir.


3
1000 sayısının kayan nokta aritmetiğine ihtiyaç duyduğunu söylerken yanlış olduğuna inanıyorum. Herhangi bir numaralandırma sistemini kullanarak herhangi bir doğal numarayı temsil edebilirsiniz. Aslında, 1000'in ikili eşdeğeri 1111101000'dir .
Doktoro Reichard,

Doktoro, lütfen ikili sistemde ya da baz 2'de çalıştığımızı unutmayın, yani yanlış olan sizsiniz. İkilikteki 2'nin ilk 10 gücü (temel 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. Cevabın üstel olduğuna dikkat edin, üssü her 1 arttırdığınızda iki katına çıkar. Görüyorsunuz, öyle değil. İkili bir 2 (bir İKİLİ 2 ... temel on 2 değil) 1 000 yapmak için herhangi bir pozitif tamsayıya yükseltmek mümkündür. Aşağı oyu aynı şekilde takdir ediyorum.
user3005790

Bu biraz ve byte arasındaki farklı açıklamıyor. Aslında bir "zor hızlı kural" var 1 Kb bin bit, 1KB ise bin bayttır. Çok büyük bir fark var. 8 Kb, 1 KB'dir.
Ramhound

3
Her ne kadar bu ifade doğru olsa da, yine de herhangi bir kayan nokta aritmetiği uygulamanıza gerek yoktur. 2'nin güçlerini anlarsınız, bu yüzden şunu da anlayabilirsiniz: 1111101000 = 2 ^ 9 + 2 ^ 8 + 2 ^ 7 + 2 ^ 6 + 2 ^ 5 + 2 ^ 3 = 1000.
Doktoro Reichard

1
Ben inanmıyorum "Onlar baz ikili yaklaşımları 10 numaraları vardı Onlar kesin rakamları olması gerekiyordu asla" doğrudur; Sanırım sadece bunlarla sınırlı olan donanımların ve sıfırların depolanmasıyla sınırlı olan donanımın ve ikili kayıtların kullanıldığı donanım adreslemesinin bir sonucudur. Her ikisi de taban 2'dir; yaklaşık 10 hesaplama ile ilgili değildir. Ayrıca, hesaplamalar hakkında konuştuğunuz noktayı göremiyorum. Bilgisayar çıktısının 1024'ü aslında 1000'i göstermeyi amaçladığı veya dahili olarak 1024'ü göstereceği zaman 1000'i göstereceği gibi değildir. Hangi hesaplamaları kastediyorsunuz?
Arjan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.