Apa perbedaan antara Word dan Byte?


93

Saya telah melakukan beberapa penelitian. Satu byte adalah 8 bit dan satu kata adalah unit terkecil yang dapat dialamatkan pada memori. Panjang kata yang tepat bervariasi. Yang tidak saya mengerti adalah apa gunanya memiliki byte? Mengapa tidak mengatakan 8 bit?

Saya mengajukan pertanyaan ini kepada seorang profesor dan dia berkata bahwa kebanyakan mesin saat ini memiliki alamat byte, tetapi apa artinya itu?


12
Cara terbaik adalah menghindari istilah "kata" karena ambiguitasnya. Atau buat lebih akurat dengan mengucapkan kata 16-bit, kata 32-bit, ...
starblue

2
Apakah menguntungkan memiliki kata yang lebih besar atau lebih kecil?

2
@ quest4knoledge kata yang lebih besar memungkinkan untuk petunjuk yang lebih besar (alias lebih banyak RAM), dan memungkinkan nomor yang lebih besar untuk diproses dengan cepat. Ini juga memungkinkan beberapa operasi seperti memset menjadi lebih cepat, dengan bekerja di blok yang lebih besar. Namun, prosesor dengan kata yang lebih besar membutuhkan lebih banyak transistor di dalam prosesor dan mungkin mengonsumsi lebih banyak energi.
VoidStar

@VoidStar dan kata yang lebih besar berarti ruang alamat yang lebih kecil, atau apakah saya bingung?

1
Untuk menjawab pertanyaan "apa gunanya memiliki byte" - itu sejarah. CPU pada awalnya tidak mampu menangani sesuatu yang lebih besar dari "byte" (prosesor sebelumnya hanya menangani nybbles (4 bit) tetapi istilah tersebut tidak pernah benar-benar dipahami). CPU pertama dari semua catatan adalah Intel 8086/8088. Ini dirancang untuk menangani instruksi yang dibangun di sekitar "byte", ini juga mengapa kami masih merujuk ke memori dalam istilah xBytes misalnya GigaBytes karena unit dasar dari memori yang dapat dialamatkan adalah byte. 'K adalah referensi ke KiloBytes di mana PC pertama memiliki 16, dapat diperluas hingga 64 - woo hoo!
Fred

Jawaban:


169

Byte : Saat ini, satu byte hampir selalu 8 bit. Namun, itu tidak selalu terjadi dan tidak ada "standar" atau sesuatu yang menentukan hal ini. Karena 8 bit adalah angka yang mudah untuk digunakan, bit tersebut menjadi standar de facto.

Word : Ukuran alami yang digunakan prosesor untuk menangani data (ukuran register). Ukuran kata yang paling umum ditemukan saat ini adalah 8, 16, 32, dan 64 bit, tetapi ukuran lain mungkin. Misalnya, ada beberapa mesin 36 bit , atau bahkan mesin 12 bit .

The byte adalah unit dialamatkan terkecil untuk CPU. Jika Anda ingin mengatur / menghapus bit tunggal, pertama-tama Anda harus mengambil byte yang sesuai dari memori, mengacaukan bit tersebut, lalu menulis byte tersebut kembali ke memori.

Sebaliknya, kata adalah potongan bit terbesar yang dapat digunakan prosesor untuk memproses (seperti penambahan dan pengurangan) pada satu waktu. Definisi tersebut agak kabur, karena beberapa prosesor mungkin memiliki ukuran kata yang berbeda untuk tugas yang berbeda (misalnya, pemrosesan integer vs. floating point). Ukuran kata adalah apa yang digunakan sebagian besar operasi.

Ada juga beberapa prosesor yang memiliki ukuran penunjuk berbeda : misalnya, 8086 adalah prosesor 16-bit yang berarti lebar registernya 16 bit. Tetapi pointernya (alamat) memiliki lebar 20 bit dan dihitung dengan menggabungkan dua register 16 bit dengan cara tertentu.


9
Jawaban yang sangat bagus. Saya hanya berdalih dengan " Kata sebaliknya adalah bagian terbesar dari bit yang dapat digunakan prosesor untuk memproses ... pada satu waktu ". Ini sebenarnya adalah potongan bit yang paling umum, dll. Banyak arsitektur yang telah berevolusi dari waktu ke waktu memiliki ukuran kata yang tidak terluas, tetapi seringkali terbatas pada apa yang dapat mereka lakukan dengan nilai terluasnya.
Ross Patterson

11
Untuk kredit ekstra, "nibble" adalah istilah umum untuk setengah byte. Itu muncul selama era CPU komputer mikro awal ( misalnya , Intel 8080), dan selalu dipahami sebagai 4 bit, karena pada saat itu byte telah menetap menjadi 8 bit.
Ross Patterson

6
Saat ini byte 8-bit adalah standar; lihat IEC 80000-13: 2008.
pengguna2431763

1
@DebanjanDhar: Ya, mereka tidak berhubungan. Satu-satunya hubungan adalah bahwa halaman (AFAIK) selalu merupakan kelipatan dari ukuran kata.
DarkDust

4
x86 (seperti biasa) membuat segalanya menjadi rumit: Dalam terminologi Intel, a wordadalah 16 bit, bahkan pada CPU x86 modern di mana ukuran operan default adalah 32 bit (dword), dan lebar register integer adalah 64 bit (qword). Dan register xmm memiliki lebar 128-bit ( movdqapindah quad-ganda). Bus memori setidaknya memiliki lebar 64 bit (dan transfer dalam semburan 64 byte = baris cache), dan unit eksekusi ke jalur cache setidaknya memiliki lebar 128 bit, atau lebar 256 atau bahkan 512 bit. Apa pun ukuran kata mesin asli dari x86 modern, ini bukan 16 bit, tetapi x86 modern masih menggunakan terminologi 8086.
Peter Cordes

16

Yang tidak saya mengerti adalah apa gunanya memiliki byte? Mengapa tidak mengatakan 8 bit?

Terlepas dari poin teknis bahwa satu byte belum tentu 8 bit, alasan untuk memiliki istilah adalah sifat manusia yang sederhana:

  • ekonomi usaha (alias kemalasan) - lebih mudah untuk mengatakan "byte" daripada "delapan bit"

  • tribalisme - sekelompok orang suka menggunakan jargon / bahasa pribadi untuk membedakan mereka dari orang lain.

Hanya mengikuti arus. Anda tidak akan mengubah 50+ tahun akumulasi terminologi TI dan bagasi budaya dengan mengeluh tentangnya.


FWIW - istilah yang tepat untuk digunakan saat Anda bermaksud "8 bit tidak bergantung pada arsitektur perangkat keras" adalah "oktet".


saya pikir oktet itu hanya terjemahan bahasa Prancis dari byte, terima kasih;)
Abdelouahab Pp

8

BYTE

Saya mencoba menjawab pertanyaan ini dari perspektif C ++.

Standar C ++ mendefinisikan 'byte' sebagai "Unit data yang dapat dialamatkan cukup besar untuk menampung setiap anggota dari kumpulan karakter dasar lingkungan eksekusi."

Artinya, byte terdiri dari setidaknya cukup bit yang berdekatan untuk mengakomodasi himpunan karakter dasar untuk implementasi. Artinya, jumlah nilai yang mungkin harus sama atau melebihi jumlah karakter yang berbeda. Di Amerika Serikat, himpunan karakter dasar biasanya himpunan ASCII dan EBCDIC, yang masing-masing dapat ditampung oleh 8 bit. Oleh karena itu dijamin bahwa satu byte akan memiliki setidaknya 8 bit.

Dengan kata lain, byte adalah jumlah memori yang dibutuhkan untuk menyimpan satu karakter.

Jika Anda ingin memverifikasi 'jumlah bit' dalam implementasi C ++ Anda, periksa file 'limit.h'. Ini harus memiliki entri seperti di bawah ini.

#define CHAR_BIT      8         /* number of bits in a char */

KATA

Sebuah Word didefinisikan sebagai jumlah bit tertentu yang dapat diproses bersama-sama (yaitu dalam satu upaya) oleh mesin / sistem. Sebagai alternatif, kita dapat mengatakan bahwa Word mendefinisikan jumlah data yang dapat ditransfer antara CPU dan RAM dalam satu operasi.

Register perangkat keras di mesin komputer berukuran kata. Ukuran Word juga menentukan kemungkinan alamat memori terbesar (setiap alamat memori menunjuk ke memori berukuran byte).

Catatan - Dalam program C ++, alamat memori menunjuk ke satu byte memori dan bukan ke kata.


6

Mengapa tidak mengatakan 8 bit?

Karena tidak semua mesin memiliki byte 8-bit. Karena Anda memberi tag ini C, cari CHAR_BITdi limits.h.


6

Kata adalah ukuran register di prosesor. Ini berarti instruksi prosesor seperti, add, mul, dll ada pada input berukuran kata.

Tetapi kebanyakan arsitektur modern memiliki memori yang dapat dialamatkan dalam potongan 8-bit, jadi lebih mudah untuk menggunakan kata "byte".


Jadi dalam arti istilah "byte" hanya digunakan untuk kenyamanan?

Ya, "byte" sangat cocok ketika istilah itu ditemukan. Seperti banyak konvensi, begitu mereka ditetapkan, mereka bertahan. Saya tidak yakin apakah terminologi berbasis byte benar-benar membuat komputer lebih mudah dipahami dalam gambaran besar lagi, tetapi ini adalah konvensi yang dominan dan tidak ingin berubah dalam waktu dekat.
VoidStar

Byte adalah istilah yang digunakan untuk unit yang digunakan sebagai karakter dalam teks. Secara historis ada byte dengan ukuran dari 6 hingga 9 bit.
starblue

@starblue bagaimana mungkin karakter menggunakan lebih sedikit ruang daripada kata?

1
@ quest4knoledge: karena memori disimpan dalam bagian yang lebih kecil dari kata-kata itu. Sebuah kata adalah 32bits (atau 64bits pada mesin yang lebih baru). Dalam algoritme yang memproses karakter individual 1-oleh-1, karakter tersebut mengambil seluruh kata hanya saat berada di dalam CPU, dan saat ditempatkan kembali di RAM, karakter tersebut dikemas lebih rapat.
VoidStar

5

Dalam konteks ini, kata adalah unit yang digunakan mesin saat bekerja dengan memori. Misalnya, pada mesin 32 bit, word memiliki panjang 32 bit dan pada 64 bit panjangnya 64 bit. Ukuran kata menentukan ruang alamat.

Dalam pemrograman (C / C ++), kata biasanya diwakili oleh int_ptrtipe, yang memiliki panjang yang sama dengan penunjuk, dengan cara ini mengabstraksi detail ini.

Beberapa API mungkin membingungkan Anda, seperti Win32 API, karena memiliki tipe seperti WORD(16 bit) dan DWORD(32 bit). Alasannya adalah bahwa API awalnya menargetkan mesin 16 bit, kemudian diporting ke mesin 32 bit, lalu ke mesin 64 bit. Untuk menyimpan pointer, Anda bisa menggunakan INT_PTR. Lebih detail di sini dan di sini .


5

Sepertinya semua jawaban mengasumsikan bahasa tingkat tinggi dan terutama C / C ++.

Tetapi pertanyaannya adalah "assembly" dan di semua assembler yang saya tahu (untuk CPU 8bit, 16bit, 32bit dan 64bit), definisinya jauh lebih jelas:

byte  = 8 bits 
word  = 2 bytes
dword = 4 bytes = 2Words (dword means "double word")
qword = 8 bytes = 2Dwords = 4Words ("quadruple word")

3
Tidak, ukuran ini hanya valid di mesin 16-bit. Anda mungkin terbiasa dengan pemrograman Windows yang masih menggunakan makro ini karena ini merupakan warisan dari 16-bit hari dan MS tidak repot-repot memperbaikinya.
DarkDust

2
BTW, karena ukuran sebuah kata (dan bahkan satu byte) dapat bervariasi, ISO-C memiliki tipe int<X>_tdan uint<X>_t(ditambah lagi) yang harus digunakan jika Anda menginginkan variabel / parameter dengan ukuran bit tertentu.
DarkDust

@DarkDust kita berbicara tentang bahasa assembly di sini. Standar C tidak relevan. BTW, saya pemrograman perakitan dari 1980 dan nama yang sama digunakan. (yah, mungkin kecuali qword)
john ditemukan pada

Namun, saya menemukan pengecualian: di GNU sebagai, .wordmungkin 32 bit (misalnya untuk Sparc ).
DarkDust

Maaf, AS bukan assembler. Itu jelek, lumpuh, sengsara, mutan, dibuat dengan satu-satunya tujuan untuk menjadi back end untuk HLL compiler.
John ditemukan pada

3

Panjang kata yang tepat bervariasi. Yang tidak saya mengerti adalah apa gunanya memiliki byte? Mengapa tidak mengatakan 8 bit?

Meskipun panjang kata bervariasi, pada semua mesin modern dan bahkan semua arsitektur lama yang saya kenal, ukuran kata masih merupakan kelipatan dari ukuran byte. Jadi tidak ada kerugian tertentu untuk menggunakan "byte" di atas "8 bit" dalam kaitannya dengan ukuran kata variabel.

Selain itu, berikut beberapa alasan untuk menggunakan byte (atau oktet 1 ) di atas "8 bit":

  1. Unit yang lebih besar nyaman untuk menghindari angka yang sangat besar atau sangat kecil: Anda mungkin juga bertanya "mengapa mengatakan 3 nanodetik ketika Anda dapat mengatakan 0,000000003 detik" atau "mengapa mengatakan 1 kilogram ketika Anda dapat mengatakan 1.000 gram", dll.
  2. Di luar kenyamanan, unit byte entah bagaimana sama fundamentalnya dengan 1 bit karena banyak operasi biasanya bekerja tidak pada level byte, tetapi pada level byte: menangani memori, mengalokasikan penyimpanan dinamis, membaca dari file atau soket, dll.
  3. Bahkan jika Anda mengadopsi "8 bit" sebagai jenis unit, sehingga Anda dapat mengatakan "dua 8-bit" daripada "dua byte", akan sangat membingungkan jika unit baru Anda dimulai dengan angka. Misalnya, jika seseorang mengatakan "seratus 8-bit" itu dapat dengan mudah ditafsirkan sebagai 108 bit, bukan 100 bit.

1 Meskipun saya akan menganggap satu byte sebagai 8 bit untuk jawaban ini, ini tidak berlaku secara universal: pada mesin yang lebih lama, byte mungkin memiliki ukuran yang berbeda (seperti 6 bit . Oktet selalu berarti 8 bit, terlepas dari mesinnya ( jadi istilah ini sering digunakan dalam mendefinisikan protokol jaringan) .Dalam penggunaan modern, byte banyak digunakan sebagai sinonim dengan 8 bit.


2

Apapun terminologi yang ada dalam lembar data dan kompiler, 'Byte' adalah delapan bit. Jangan coba membingungkan penanya dan generalitas dengan pengecualian yang lebih tidak jelas, terutama karena kata 'Byte' berasal dari ungkapan "By Eight". Saya telah bekerja di industri semikonduktor / elektronik selama lebih dari tiga puluh tahun dan tidak pernah dikenal 'Byte' digunakan untuk mengekspresikan sesuatu yang lebih dari delapan bit.


Tidak biasa ya (kami tahu itu. Contohnya adalah, Instrumen texas c54x Google instrumen texas c54x byte. Ti.com/lit/ug/spru393/spru393.pdf "Instruksi 'C55x adalah panjang byte variabel dengan ukuran mulai dari 8 bit hingga 48 bit ". stackoverflow.com/questions/2098149/...
barlop

1
Itu tidak datang dari sana sama sekali. Istilah ini sebenarnya diciptakan oleh W. Buchholtz di IBM pada akhir 1950-an. Sumber: bobbemer.com/BYTE.HTM . Menurut Bob Bemer, ejaan "byte" dipilih dalam preferensi "menggigit" untuk menghindari kebingungan (dengan "bit") karena kesalahan ketik. Dia pasti tahu. Dia ada disana!
Stephen C

(Hanya 30 tahun? Anda adalah ikan kakap belaka. Saya belajar memprogram pada sistem di mana ukuran "byte" alami bukan 8 bit :-))
Stephen C

1

Referensi: https://www.os-book.com/OS9/slide-dir/PPT-dir/ch1.ppt

Unit dasar penyimpanan komputer adalah bit. Sebuah bit dapat berisi salah satu dari dua nilai, 0 dan 1. Semua penyimpanan lainnya di komputer didasarkan pada kumpulan bit. Diberikan cukup bit, sungguh menakjubkan betapa banyak hal yang dapat diwakili oleh komputer: angka, huruf, gambar, film, suara, dokumen, dan program, untuk beberapa nama. Satu byte adalah 8 bit, dan pada kebanyakan komputer, ini adalah bagian penyimpanan terkecil yang nyaman. Misalnya, kebanyakan komputer tidak memiliki instruksi untuk bergerak sedikit tetapi memiliki satu instruksi untuk memindahkan satu byte. Istilah yang kurang umum adalah kata, yang merupakan unit data asli arsitektur komputer tertentu. Sebuah kata terdiri dari satu atau lebih byte. Misalnya, komputer yang memiliki register 64-bit dan pengalamatan memori 64-bit biasanya memiliki kata-kata 64-bit (8-byte). Komputer menjalankan banyak operasi dalam ukuran kata aslinya daripada satu byte pada satu waktu. Penyimpanan komputer, bersama dengan kebanyakan throughput komputer, umumnya diukur dan dimanipulasi dalam byte dan kumpulan byte. Kilobyte, atau KB, adalah 1.024 byte satu megabyte, atau MB, adalah 1.024 2 byte gigabyte, atau GB, adalah 1.024 3 byte per terabyte, atau TB, adalah 1.024 4 byte per petabyte, atau PB, adalah 1.024 5 byte Komputer produsen sering membulatkan angka-angka ini dan mengatakan bahwa satu megabyte adalah 1 juta byte dan satu gigabyte adalah 1 miliar byte. Pengukuran jaringan merupakan pengecualian dari aturan umum ini; mereka diberikan dalam bit (karena jaringan memindahkan data sedikit demi sedikit) 024 5 byte Produsen komputer sering membulatkan angka-angka ini dan mengatakan bahwa satu megabyte adalah 1 juta byte dan satu gigabyte adalah 1 miliar byte. Pengukuran jaringan merupakan pengecualian dari aturan umum ini; mereka diberikan dalam bit (karena jaringan memindahkan data sedikit demi sedikit) 024 5 byte Produsen komputer sering membulatkan angka-angka ini dan mengatakan bahwa satu megabyte adalah 1 juta byte dan satu gigabyte adalah 1 miliar byte. Pengukuran jaringan merupakan pengecualian dari aturan umum ini; mereka diberikan dalam bit (karena jaringan memindahkan data sedikit demi sedikit)


-1

Jika sebuah mesin dapat dialamatkan byte dan sebuah kata adalah unit terkecil yang dapat dialamatkan pada memori maka saya kira sebuah kata akan menjadi byte!


Ya. Unit memori minimum yang dapat dialamatkan pada TMS320C54xx (salah satu DSP Texas Instruments) adalah 16-bit, yang juga merupakan ukuran terkecil dari register tujuan umumnya. Dan kompiler TI C mendefinisikan char = short = int = 16 bits di atasnya.
Alexey Frunze

Tidak, kebanyakan mesin RISC memiliki 32-bit word, tetapi dapat menangani satu byte. Di MIPS misalnya, word pasti berarti 32 bit, tetapi ada lbinstruksi (load byte) yang memuat 8 bit.
Peter Cordes

-1

Sekelompok 8 bit disebut byte (dengan pengecualian jika bukan :) untuk arsitektur tertentu)

Sebuah kata adalah kelompok ukuran tetap bit yang ditangani sebagai satu unit dengan set instruksi dan / atau perangkat keras prosesor. Itu berarti ukuran register tujuan umum (yang umumnya lebih dari satu byte) adalah sebuah kata

Di C, sebuah kata paling sering disebut integer =>int


7
Sekelompok 8 bit disebut oktet.
cnicutar

2
benar: Istilah octetini didefinisikan secara eksplisit menunjukkan urutan 8 bit karena ambiguitas yang terkait dengan istilah byte . Tapi saya suka suara yang bytelebih baik :)
tolitius

2
@tolitius: +1 untuk "Tapi saya suka suara yang bytelebih baik": Saya sangat curiga Anda tidak sendirian dalam hal ini dan aman untuk beberapa sistem khusus, "kebingungan" dari satu byte mungkin berukuran selain 8-bit tidak lagi relevan hari ini.
Joachim Sauer

-1

Istilah BYTE dan WORD relatif terhadap ukuran prosesor yang dirujuk. Prosesor yang paling umum adalah / dulu 8 bit, 16 bit, 32 bit atau 64 bit. Ini adalah panjang WORD prosesor. Sebenarnya setengah dari WORD adalah BYTE, berapa pun panjang angkanya. Siap untuk ini, setengah dari BYTE adalah NIBBLE.


Tidak, dalam CPU dengan kata-kata 32-bit dan byte 8-bit (misalnya MIPS atau ARM), setengah kata adalah 2 byte.
Peter Cordes

-3

Faktanya, dalam penggunaan umum, kata menjadi identik dengan 16 bit, sama seperti byte dengan 8 bit. Bisa jadi sedikit membingungkan karena "ukuran kata" pada CPU 32-bit adalah 32-bit, tetapi ketika berbicara tentang sebuah kata data, yang satu berarti 16-bit. Mikrokontroler dengan ukuran kata 32-bit telah memanggil instruksi mereka "rindu" (seharusnya untuk mencoba dan menghindari kebingungan kata / kata ganda).


1
Itu sepenuhnya tergantung pada jenis CPU. Seperti yang Anda tunjukkan, pada mesin 32-bit non-IA32, "kata" biasanya 32 gigitan.
Ross Patterson

2
@RossPatterson Itu sepenuhnya tergantung pada apakah Anda sedang mengembangkan perangkat lunak atau makan malam.
Insinyur

ARM / MIPS / arsitektur RISC mainstream lainnya memiliki kata-kata 32-bit. Ini adalah lebar register (pada versi 32-bit dari ISA tersebut) dan lebar instruksi. 16 bit adalah setengah kata, jadi instruksi ARM sukaldrh memuat 16 bit dan tanpa memperluasnya ke register 32-bit. Atau ldrshuntuk memuat dan memperpanjang 16 bit.
Peter Cordes
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.