Apa perbedaan antara kibibyte, satu kilobit, dan satu kilobyte?

45

Pertanyaan ini membuat saya bertanya-tanya tentang perbedaan antara tiga cara mengukur ukuran ini: kibibyte , satu kilobit , dan kilobyte konvensional.

Saya mengerti bahwa pengukuran ini memiliki kegunaan yang berbeda (kecepatan transfer data diukur dalam bit / detik), tapi saya tidak yakin apakah saya dapat membedakan antara Mb dan MB dan MiB.

Berikut adalah komentar, direproduksi di bawah, diambil dari jawaban ini ( penekanan saya ).

C64 memiliki 65536 byte RAM. Secara konvensional, ukuran memori ditentukan dalam kibiBytes , kecepatan transfer data dalam kilobit , dan penyimpanan massal dalam byte apa pun yang diproduksi oleh produsen . Harddrives menggunakan T, G, M dan k pada label, Windows melaporkan ukurannya dalam Ti , Gi , Mi dan ki . Dan disket 1,44MB itu? Itu bukan 1,44MB atau 1,44MiB, mereka 1,44 kilokibibytes. Itu 1440kiB atau 1'474'560 byte. - Ketiga

Merah dan putih
sumber
12
Akan ada kebingungan untuk tahun-tahun mendatang. Pada hari-hari awal komputasi, orang-orang melihat bahwa itu jelas lebih mudah untuk bekerja dengan faktor 1024 daripada 1000 untuk komputer. Oleh karena itu, selama beberapa dekade, awalan SI standar "kilo" digunakan (dan masih sangat sering) digunakan untuk non-standar 1024, dan itu menjadi standar de-facto dalam komputasi. Hanya saja beberapa orang masih menggunakan SI 1000. Untuk memilah-milah kekacauan, "kibi" sekarang secara resmi didefinisikan sebagai faktor 1024 - tetapi sudah terlambat untuk transisi yang mudah. "kilo" akan secara teratur digunakan / disalahgunakan untuk 1024 faktor untuk sementara waktu.
Steve314
Itu akan membantu adopsi jika mereka tidak memilih awalan yang jelas terdengar bodoh; bahkan sebuah akronim menuntut seseorang untuk "menginspirasikan secara mental" kata tersebut. Saya tidak akan pernah menggunakan "kibibyte", dll.
tgm1024

Jawaban:

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)

Ini sama dengan awalan SI apa pun; k(1x10 3 ), M(1x10 6 ), G(1x10 9 ), jadi, dengan ekstensi:

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)

Satu-satunya yang sedikit berbeda adalah Awalan Biner IEC (kibi / mebi / gibi dll), karena mereka berada di basis 2, bukan basis 10 (misalnya semua angka sama dengan 2 sesuatu, bukan 10 sesuatu ). Saya lebih suka menggunakan awalan SI karena saya merasa jauh lebih mudah. Plus, Kanada (negara saya) menggunakan sistem metrik, jadi saya terbiasa, misalnya 1kg = 1000g(atau 1k anything = 1000 base things). Tidak ada yang salah atau benar; pastikan Anda tahu yang mana yang Anda gunakan dan apa yang benar-benar disamakan.

Untuk menenangkan para komentator:

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

Inilah sebabnya, jika Anda pernah melihat dalam hex editor, semuanya terbagi menjadi dua karakter heksadesimal; setiap karakter hex adalah ukuran gigitan, dan ada dua hingga satu byte. Misalnya:

198 (decimal) = C6 (hex) = 11000110 (bits)
tupai
sumber
5
+1 Menyebutkan bahwa ada 8 bit dalam satu byte mungkin berguna.
paradroid
4
... dan jangan lupa bahwa nybble adalah empat bit (atau setengah byte)!
Linker3000
4
Mungkin juga diketahui bahwa huruf kecil "b" kadang-kadang digunakan secara salah untuk menyingkat "byte". Saya melihat banyak tempat hanya menggunakan "bit" di abreviasi seperti di MB untuk megabyte dan Mbit untuk megabit dan tinggal jauh dari "b" sama sekali.
James
4
Awalan kilo disingkat k, bukan K.
garyjohn
1
@Redandwhite Tidak, mereka menggunakan basis 10 untuk mengukur penyimpanan mereka, tetapi komputer kami menggunakan basis 2. Ini menyumbang perbedaan antara apa yang dicetak pada kotak dan apa yang muncul di komputer. Misalnya, 500GB (box) = 465.7GiB (computer)(dan itulah yang mereka dapatkan dari Anda).
Tupai
9

Ada beberapa istilah dasar yang sederhana dan mudah dipahami:

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

Untuk mengkonversi antara bit dan byte (dengan awalan apa pun), cukup gandakan atau bagi dengan delapan; bagus dan sederhana.

Sekarang, segala sesuatunya menjadi sedikit lebih rumit karena ada dua sistem untuk mengukur kelompok besar data: desimal dan biner . Selama bertahun-tahun, pemrogram dan insinyur komputer hanya menggunakan istilah yang sama untuk keduanya, tetapi kebingungan akhirnya membangkitkan beberapa upaya untuk menstandarisasi satu set awalan yang tepat.

Setiap sistem menggunakan satu set awalan serupa yang dapat diterapkan ke bit atau byte. Setiap awalan memulai yang sama di kedua sistem, tetapi yang biner terdengar seperti baby-talk setelah itu.

Sistem desimal adalah basis-10 yang digunakan kebanyakan orang dan nyaman digunakan karena kami memiliki 10 jari. Sistem biner adalah basis-2 yang digunakan kebanyakan komputer dan nyaman digunakan karena mereka memiliki dua keadaan tegangan.

Sistem desimal jelas dan mudah digunakan untuk kebanyakan orang (cukup sederhana untuk dikalikan di kepala kita). Setiap awalan naik 1.000 (alasan untuk itu adalah masalah yang sama sekali berbeda).

Sistem biner jauh lebih sulit bagi kebanyakan orang non-komputer untuk menggunakan, dan bahkan programmer sering tidak dapat menggandakan jumlah besar secara sewenang-wenang di kepala mereka. Namun demikian, ini adalah masalah sederhana menjadi kelipatan dua. Setiap awalan naik 1.024. Satu "K" adalah 1.024 karena itu adalah kekuatan terdekat dari dua ke desimal "k" dari 1.000 (ini mungkin benar pada titik ini, tetapi perbedaannya meningkat dengan cepat dengan setiap awalan berturut-turut).

Jumlahnya sama untuk bit dan byte yang memiliki awalan yang sama.

* 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

Perhatikan bahwa perbedaan antara sistem desimal dan biner mulai kecil (pada 1K, mereka hanya 24 byte, atau terpisah 2,4%), tetapi tumbuh dengan setiap tingkat (pada 1G, mereka> 70MiB, atau 6,9% terpisah).

Sebagai aturan umum, perangkat keras menggunakan unit desimal (baik bit atau byte) sementara perangkat lunak menggunakan biner (biasanya byte).

Ini adalah alasan bahwa beberapa produsen, terutama drive mfgs, suka menggunakan unit desimal, karena itu membuat ukuran drive terdengar lebih besar, namun pengguna menjadi frustrasi ketika mereka menemukan itu kurang dari yang mereka harapkan ketika mereka melihat Windows et. Al. melaporkan ukuran dalam biner. Misalnya, 500GB = 476GiB, jadi saat drive dibuat mengandung 500GB dan diberi label demikian, My Computer menampilkan biner 476GiB (tetapi sebagai "476GB"), sehingga pengguna bertanya-tanya ke mana 23GB lainnya pergi. (Pembuat drive sering menambahkan catatan kaki ke paket yang menyatakan bahwa "ukuran yang diformat kurang" yang menyesatkan karena overhead sistem file tidak seberapa dibandingkan dengan perbedaan antara unit desimal dan biner.)

Perangkat jaringan sering menggunakan bit daripada byte karena alasan historis, dan ISP sering suka beriklan menggunakan bit karena itu membuat kecepatan koneksi yang mereka tawarkan terdengar lebih besar: 12Mibps, bukan hanya 1,5MiBps. Mereka bahkan sering mencampur dan mencocokkan bit dan byte dan desimal dan biner. Misalnya, Anda dapat berlangganan ke apa yang disebut ISP sebagai saluran “12MBps”, berpikir bahwa Anda mendapatkan 12MiBps tetapi sebenarnya hanya menerima 1,43MiBps (12.000.000 / 8/1024/1024).

Synetech
sumber
2
@endolith, tidak benar. Pertama-tama, memang ada, atau setidaknya di masa lalu, beberapa produsen drive yang menggunakan unit biner. Kedua, Anda melewatkan intinya. Jika mereka mau, mereka bisa menempatkan 73.400.320 pada drive yang memang 70M (i) B bukannya 66. Mereka menggunakan 70.000.000 karena lebih murah untuk menggunakan itu dan masih menyebutnya "70MB". Ini sudut pemotongan yang sederhana dan banyak produsen melakukannya. Lihatlah makanan; bukannya 500G, mereka akan menempatkan 454G karena sama dengan 1LB. Lebih buruk lagi, bukannya 454G, mereka akan menempatkan 450G dan menyalahkan 4G yang hilang pada pembulatan. Ini bukan konspirasi, ini menghemat biaya.
Synetech
1
Tolong berikan beberapa contoh produsen hard drive menggunakan unit biner.
endolith
1
@endolith, ini bukan situs sejarah. Mungkin ketika saya melakukan pembersihan musim semi dan menggali beberapa drive lama, saya akan memposting foto atau sesuatu. Jika tidak, Anda dapat pergi ke museum sejarah komputer atau berbelanja komputer ibu-dan-pop dan menemukan beberapa hard drive lama jika itu penting bagi Anda. Saat ini, sebagian besar mfgs sengaja menggunakan label yang membuat segalanya terdengar lebih besar. Seperti saya katakan, mereka bisa membuatnya 73.400.320 byte untuk membuat drive 70MB jika mereka mau, tapi mengapa repot ketika mereka bisa murah dan secara teknis masih menyebutnya 70MB? Sekali lagi, ini bukan konspirasi, ini tipuan pemasaran umum.
Synetech
2
Saya sudah melihat melalui arsip bitsavers, dan semua contoh yang saya temukan adalah desimal. Mitos ini yang mendorong produsen beralih dari biner ke desimal di beberapa titik untuk menipu pelanggan. Mereka tidak ditulis oleh departemen pemasaran, tetapi oleh insinyur menggunakan unit standar yang digunakan insinyur. Adalah logis dan waras untuk memanggil drive IBM 3340 byte 70.000.000 "70 MB". Itulah yang selalu berarti 'mega-' 'dan itulah yang diharapkan pengguna. Menyebutnya "66 MB" di beberapa tempat dan "68.359 KB" di tempat lain, seperti Microsoft Windows, gila.
endolith
1
@endolith, tidak ada yang mengatakan bahwa mereka beralih ke desimal untuk menipu, hanya saja mereka memasarkannya dengan sengaja meskipun mereka tahu tentang kebingungan dan dapat membuat drive 73.400.320 byte, bukan hanya 70.000.000 yang bukan angka bulat di komputer. Adapun pernyataan Anda tentang hal itu "selalu" berarti, sudah ada utas di sini tentang kapan unit biner mulai digunakan dan itu sudah lama sekali, tentu saja sebelum komputer menjadi produk konsumen.
Synetech
-4

Beberapa jawaban tidak tepat.

Mari pertama-tama membuat beberapa catatan:

Awalan "kilo" berarti 1 000. Awalan "kilo" berarti apa pun 1.000 dari item itu. Hal yang sama berlaku untuk "mega" atau juta, "giga" atau miliar, "tera" atau triliun, dan seterusnya.

Alasan 1 024 ada bukannya hanya memiliki 1 000 karena cara aritmatika biner bekerja. Biner, seperti namanya, adalah sistem basis 2 (memiliki 2 digit: 0, 1). Itu hanya dapat melakukan aritmatika dengan dua digit, berbeda dengan sistem basis 10 yang kami gunakan setiap hari (0, 1, 2 ... 9), yang memiliki sepuluh digit.

Untuk mencapai angka 1 000 ( kilo ) menggunakan aritmatika biner, perlu untuk melakukan perhitungan floating point. Ini berarti bahwa digit biner harus dijalankan setiap operasi hingga 1.000 tercapai. Dalam sistem basis 10, 1 000 = 10 3 (Anda selalu menaikkan 10 ke daya di basis 10), perhitungan yang sangat mudah dan cepat untuk komputer untuk melakukan tanpa "sisa", tetapi dalam sistem basis 2, itu adalah tidak mungkin menaikkan 2 (Anda selalu menaikkan 2 pangkat di basis 2) ke bilangan bulat positif untuk mendapatkan 1 000. Operasi floating point atau penambahan panjang harus digunakan, dan itu membutuhkan lebih banyak waktu untuk dijalankan daripada perhitungan bilangan bulat 2 10 = 1024.

Anda mungkin telah memperhatikan bahwa 2 10 = 1 024 menggoda mendekati 1 000 dan 1 024 ke 1 angka signifikan adalah 1 000 (perkiraan yang sangat baik), dan kembali ketika kecepatan CPU lambat seperti anjing tua, dan memori sangat terbatas , ini adalah pendekatan yang cukup baik dan sangat mudah untuk dikerjakan, belum lagi cepat dieksekusi.

Karena alasan inilah istilah dengan "kilo", "mega", "giga", dll., Diawali dengan angka yang tidak tepat (1 024, 2 048, 4 096, dan seterusnya). Mereka tidak pernah dimaksudkan untuk menjadi angka yang pasti, mereka adalah perkiraan biner dari basis 10 angka. Mereka hanya muncul sebagai kata jargon yang digunakan orang "teknologi".

Untuk membuat masalah menjadi lebih rumit, JEDEC telah menciptakan standar mereka sendiri untuk unit yang digunakan dalam sirkuit memori semikonduktor. Mari kita bandingkan beberapa unit JEDEC dengan unit SI (standar internasional):

Kb = Kilobit (JEDEC, 1 024 bit. Perhatikan huruf besar 'K' dan huruf kecil 'b')
kB = kiloBit (SI, 1 000 bit. Perhatikan huruf kecil 'k' dan huruf besar 'B')

b = bit (JEDEC, perhatikan huruf kecil 'b')
b = ??? (SI tidak mendefinisikan kata 'bit' sehingga penggunaannya dapat berubah-ubah)

B = byte (JEDEC, 8 bit. Perhatikan huruf besar 'B')
B = ???? (SI tidak mendefinisikan kata "byte" dan "B" digunakan untuk "Bel" [seperti dalam DeciBel])

KB = kilobyte (JEDEC, 1 024 bytes. Perhatikan huruf besar 'K' dan 'B')
kb = kilobyte (SI, 1 000 bytes. Perhatikan penggunaan huruf kecil 'k' dan huruf kecil 'B')

Intinya, tempat yang berbeda menggunakan awalan yang berbeda dengan definisi yang berbeda. Tidak ada aturan yang keras dan cepat tentang mana yang harus Anda gunakan, tetapi konsisten dengan yang Anda gunakan.

Karena tidak memilih, izinkan saya untuk menjelaskan mengapa Anda tidak dapat menghasilkan 1.000 dalam biner dengan menaikkannya ke bilangan bulat positif.

Sistem biner:

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

Perhatikan bahwa dalam sistem biner, kolomnya berlipat ganda setiap kali. Ini berbeda dengan sistem basis 10 yang meningkat sebesar 10 setiap kali:

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

10 kekuatan pertama dalam biner (basis 2) adalah:

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

Seperti yang Anda lihat, tidak mungkin untuk menaikkan biner 2 ke bilangan bulat positif apa pun untuk mencapai 1.000.

pengguna3005790
sumber
3
Saya percaya Anda salah ketika menyatakan bahwa angka 1000 membutuhkan aritmatika titik-mengambang. Anda dapat mewakili nomor alami apa pun menggunakan sistem penomoran apa pun. Sebenarnya, setara biner 1000 adalah 1111101000 .
Doktoro Reichard
Doktoro, harap diingat kami bekerja di sistem biner, atau basis 2, jadi Anda sebenarnya orang yang salah. Berikut adalah 10 kekuatan pertama dari 2 dalam biner (basis 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. Perhatikan bahwa jawabannya eksponensial, dua kali lipat setiap kali Anda meningkatkan eksponen dengan 1. Jadi Anda lihat, itu bukan mungkin untuk meningkatkan biner 2 (BINARY 2 ... bukan basis sepuluh 2) ke bilangan bulat positif untuk menghasilkan 1 000. Saya menghargai suara turun semuanya sama.
user3005790
Ini tidak menjelaskan perbedaan antara bit dan byte. Sebenarnya ada "aturan cepat keras" 1 Kb adalah seribu bit 1KB adalah seribu byte. Terdapat sebuah perbedaan yang besar. 8 Kb adalah 1 KB.
Ramhound
3
Meskipun pernyataan ini benar, Anda masih tidak perlu melakukan aritmatika floating point apa pun. Anda memahami kekuatan 2, jadi Anda juga dapat memahami bahwa 1111101000 = 2 ^ 9 + 2 ^ 8 + 2 ^ 7 + 2 ^ 6 + 2 ^ 5 + 2 ^ 3 = 1000.
Doktoro Reichard
1
Saya tidak percaya bahwa "Mereka tidak pernah dimaksudkan untuk menjadi angka pastinya, mereka adalah perkiraan biner dari angka dasar 10" adalah benar; Saya pikir itu hanya hasil dari perangkat keras yang terbatas untuk menyimpan satu dan nol, dan menangani perangkat keras menggunakan register biner. Keduanya menjadi basis 2; tidak terkait dengan perkiraan basis 10 sama sekali, saya rasa. Juga, saya gagal melihat poin yang Anda buat tentang perhitungan. Ini tidak seperti output komputer akan menunjukkan 1024 di mana ia sebenarnya dimaksudkan untuk menunjukkan 1000, atau menunjukkan 1000 ketika secara internal itu akan menjadi 1024. Perhitungan apa yang Anda maksudkan?
Arjan