Saya membaca dalam tutorial pemrograman rakitan ini bahwa 8 bit digunakan untuk data sedangkan 1 bit untuk paritas, yang kemudian digunakan untuk mendeteksi kesalahan paritas (disebabkan oleh kesalahan perangkat keras atau gangguan listrik).
Apakah ini benar?
Jawaban:
Satu byte data adalah delapan bit, mungkin ada lebih banyak bit per byte data yang digunakan pada OS atau bahkan tingkat perangkat keras untuk pengecekan kesalahan (bit paritas, atau bahkan skema pendeteksian kesalahan yang lebih maju), tetapi data tersebut delapan bit dan bit paritas apa pun biasanya tidak terlihat oleh perangkat lunak. Satu byte telah distandarisasi untuk berarti 'delapan bit data'. Teksnya tidak salah dengan mengatakan mungkin ada lebih banyak bit yang didedikasikan untuk menyimpan satu byte data daripada delapan bit data, tetapi itu biasanya tidak dianggap sebagai bagian dari byte itu sendiri, teks itu sendiri menunjukkan fakta ini.
Anda dapat melihat ini di bagian tutorial berikut:
4 * 8 = 32, mungkin sebenarnya membutuhkan 36 bit pada sistem tetapi untuk maksud dan tujuan Anda hanya 32 bit.
sumber
char
dalam C (yang terkait dengan tautan) sebenarnya adalah unit memori terkecil yang dapat dialamatkan. Hanya disebut char , tetapi Standar C membuatnya identik dengan byte .Secara tradisional, byte bisa berukuran berapa saja, dan hanya unit memori terkecil yang bisa dialamatkan. Saat ini, 8 bit byte telah cukup standar untuk perangkat lunak. Seperti yang dikatakan JustAnotherSoul, perangkat keras dapat menyimpan lebih banyak bit dari pada 8 bit data.
Jika Anda bekerja pada perangkat logika yang dapat diprogram, seperti FPGA, Anda mungkin melihat bahwa memori internal mereka sering dialamatkan sebagai potongan 9-bit, dan sebagai penulis HDL, Anda dapat menggunakan bit ke-9 untuk memeriksa kesalahan atau hanya untuk menyimpan jumlah yang lebih besar data per "byte". Saat membeli chip memori untuk perangkat keras khusus, Anda biasanya memiliki pilihan 8 atau 9 bit unit yang dapat dialamatkan (atau 16/18, 32/36, dll), dan kemudian terserah Anda apakah Anda memiliki "bit" 9 bit dan apa Anda lakukan dengan bit ke-9 jika Anda memilih untuk memilikinya.
sumber
Teks itu sangat buruk. Dia hampir pasti berbicara tentang ECC (kode koreksi kesalahan) RAM.
ECC ram biasanya akan menyimpan informasi senilai 8-bit menggunakan 9-bit. Bit per byte tambahan digunakan untuk menyimpan kode koreksi kesalahan.
(Dalam kedua kasus, setiap byte tersebar di setiap chip. Gambar milik Puget Systems )
Ini semua sama sekali tidak terlihat oleh pengguna perangkat keras. Dalam kedua kasus, perangkat lunak yang menggunakan RAM ini melihat 8 bit per byte.
Sebagai tambahan: kode koreksi kesalahan dalam RAM biasanya tidak benar-benar 1 bit per byte; mereka bukan 8 bit per 8 byte. Ini memiliki overhead ruang yang sama, tetapi memiliki beberapa keuntungan tambahan. Lihat SECDED untuk info lebih lanjut.
sumber
Secara umum, jawaban singkatnya adalah byte adalah 8 bit. Ini terlalu menyederhanakan masalah (kadang-kadang bahkan sampai ke titik ketidaktepatan), tetapi merupakan definisi yang kebanyakan orang (termasuk sejumlah besar programmer) yang akrab dengan, dan definisi hampir semua orang default (terlepas dari berapa banyak byte ukuran berbeda yang mereka miliki) Saya harus bekerja dengan).
Lebih khusus, byte adalah unit memori terkecil yang dapat dialamatkan untuk arsitektur yang diberikan, dan umumnya cukup besar untuk menampung satu karakter teks. Pada kebanyakan arsitektur modern, byte didefinisikan sebagai 8 bit; ISO / IEC 80000-13 juga menentukan bahwa byte adalah 8 bit, seperti halnya konsensus populer (yang berarti bahwa jika Anda berbicara tentang, katakanlah, byte 9-bit, Anda akan mengalami banyak masalah kecuali Anda secara eksplisit nyatakan bahwa Anda tidak bermaksud byte normal).
Namun, ada pengecualian untuk aturan ini. Sebagai contoh:
sizeof(char)
, sementara juga secara tidak langsung menyatakan bahwa achar
harus minimal 8 bit, setiap byte harus memiliki alamat unik, dan tidak boleh ada spasi antara byte yang berdekatan dalam kenangan. Ini untuk membuat bahasa lebih portabel daripada jika mereka secara eksplisit membutuhkan byte 8-bit. [Jumlah bit dalam byte ditentukan sebagaiCHAR_BIT
, dalam "batas" header C library (limits.h
dalam C,climits
dalam C ++).]Jadi, dalam kebanyakan kasus, byte biasanya akan menjadi 8 bit. Jika tidak, mungkin 9 bit, dan mungkin atau mungkin bukan bagian dari kata 36-bit.
sumber
Perhatikan bahwa istilah byte tidak didefinisikan dengan baik tanpa konteks. Sejauh menyangkut arsitektur komputer, Anda dapat mengasumsikan bahwa byte adalah 8-bit, setidaknya untuk arsitektur modern. Ini sebagian besar distandarisasi oleh bahasa pemrograman seperti C, yang membutuhkan byte untuk memiliki setidaknya 8 bit tetapi tidak memberikan jaminan untuk byte yang lebih besar, menjadikan 8 bit per byte satu-satunya asumsi yang aman.
Ada komputer dengan unit yang dapat dialamatkan lebih besar dari 8 bit (biasanya 16 atau 32), tetapi unit tersebut biasanya disebut kata-kata mesin, bukan byte. Misalnya, DSP dengan kata 32K 32-bit RAM akan diiklankan memiliki 128 KB atau RAM, bukan 32 KB.
Hal-hal yang tidak begitu didefinisikan dengan baik ketika datang ke standar komunikasi. ASCII masih banyak digunakan, dan memiliki byte 7-bit (yang cocok dengan byte 8-bit pada komputer). Transceiver UART masih diproduksi untuk memiliki ukuran byte yang dapat dikonfigurasi (biasanya, Anda dapat memilih setidaknya antara 6, 7 dan 8 bit per byte, tetapi 5 dan 9 tidak pernah terdengar).
sumber
Byte biasanya didefinisikan sebagai unit ruang memori terkecil yang dapat dialamatkan secara individual. Itu bisa dalam berbagai ukuran. Ada arsitektur dengan ukuran byte di mana saja antara 6 dan 9 bit, bahkan mungkin lebih besar. Ada juga arsitektur di mana satu-satunya unit dialamatkan adalah ukuran bus, pada arsitektur seperti itu kita dapat mengatakan bahwa mereka tidak memiliki byte , atau byte adalah ukuran yang sama dengan kata (dalam satu kasus tertentu saya tahu itu akan menjadi 32 bit); Either way, sudah pasti tidak 8 bit. Demikian juga, ada arsitektur bit-addressable, pada arsitektur itu, kita dapat kembali berpendapat bahwa byte tidak ada, atau kita bisa berpendapat bahwa byte adalah 1 bit; cara baik adalah definisi yang masuk akal, tetapi 8 bit jelas salah.
Pada banyak arsitektur tujuan umum arus utama, satu byte berisi 8 bit. Namun, itu tidak dijamin. Semakin jauh Anda menyimpang dari arus utama dan / atau dari CPU tujuan umum, semakin besar kemungkinan Anda akan menemukan non-8-bit-byte. Sejauh ini beberapa perangkat lunak yang sangat portabel bahkan membuat ukurannya dapat dikonfigurasi. Misalnya, versi GCC yang lebih lama berisi makro yang disebut
BITS_PER_BYTE
(atau sesuatu seperti itu), yang mengonfigurasi ukuran byte untuk arsitektur tertentu. Saya percaya beberapa versi NetBSD yang lebih lama dapat dibuat untuk berjalan pada arsitektur non-8-bit-per-byte.Jika Anda benar-benar ingin menekankan bahwa Anda berbicara tentang jumlah persis 8 bit daripada jumlah memori terkecil yang dapat dialamatkan, betapapun besarnya, Anda dapat menggunakan istilah octet , yang misalnya digunakan dalam banyak RfC baru.
sumber
CHAR_BIT
(ditemukan dilimits.h
), saya tidak tahuBITS_PER_BYTE
Ketika saya mulai pemrograman pada tahun 1960, kami memiliki kata-kata 48 bit dengan 6 bit byte - mereka tidak menyebut nama itu, mereka disebut karakter. Kemudian saya bekerja pada komputer Golem dengan 75 bit kata dan 15 bit byte. Kemudian, 6 bit byte adalah norma, sampai IBM keluar dengan 360, dan saat ini satu byte umumnya setara dengan satu oktet, yaitu 8 bit data. Beberapa perangkat keras memiliki bit tambahan untuk deteksi kesalahan dan mungkin untuk koreksi kesalahan, tetapi ini tidak dapat diakses oleh perangkat lunak.
sumber
Satu byte adalah 8 bit.
Di masa lalu yang jauh, ada definisi kata memori dan byte yang berbeda. Saran bahwa ambiguitas ini tersebar luas atau lazim dalam kehidupan saat ini adalah salah.
Sejak setidaknya tahun 1970-an, byte telah 8 bit. Populasi massal komputer di rumah dan PC semuanya secara jelas menggunakan byte sebagai nilai 8-bit dalam dokumentasi mereka, seperti halnya semua lembar data dan dokumentasi untuk drive floppy disk, drive hard disk dan PROM / EPROM / EEPROM / Flash EPROM / SRAM / SDRAM chip memori yang telah saya baca pada periode waktu itu. (Dan saya secara pribadi telah membaca banyak di antara mereka selama periode waktu itu.) Ethernet dan beberapa protokol komunikasi lain bagi saya sama tidak lazimnya dalam membicarakan oktet.
Ambiguitas dari istilah byte itu sendiri merupakan hal yang langka dan tidak jelas. Sangat, sangat sedikit dari populasi programmer, insinyur desain, insinyur pengujian, tenaga penjualan, insinyur layanan atau penumpang rata-rata dalam 30 tahun terakhir atau lebih akan berpikir itu berarti sesuatu selain nilai 8-bit, jika mereka mengenali kata itu sama sekali .
Ketika sebuah byte ditangani oleh perangkat keras, seperti ketika disimpan dalam chip memori atau dikomunikasikan sepanjang kabel, perangkat keras dapat menambahkan data yang berlebihan ke byte. Ini nantinya dapat membantu dalam mendeteksi kesalahan perangkat keras sehingga data yang tidak dapat diandalkan dapat dikenali dan dibuang (misalnya paritas, checksum, CRC). Atau mungkin memungkinkan kesalahan dalam data untuk diperbaiki dan data pulih (misalnya ECC). Either way, data yang berlebihan akan dibuang ketika byte telah diambil atau diterima untuk diproses lebih lanjut. Byte tetap nilai pusat 8-bit dan data redundan tetap data redundan.
sumber
Pertama, tutorial yang Anda referensikan sepertinya sudah ketinggalan zaman, dan sepertinya diarahkan pada versi lama dari prosesor x86, tanpa menyatakannya, jadi banyak hal yang Anda baca di sana tidak akan dipahami oleh orang lain (misalnya jika Anda mengklaim bahwa KATA adalah 2 byte, orang tidak akan tahu apa yang Anda bicarakan, atau mereka akan tahu bahwa Anda telah diajarkan berdasarkan pada prosesor x86 yang sangat ketinggalan zaman dan akan tahu apa yang diharapkan).
Byte adalah berapa pun jumlah bit yang diputuskan seseorang. Itu bisa 8 bit, atau 9 bit, atau 16 bit, apa saja. Pada 2016, dalam banyak kasus, byte akan menjadi delapan bit. Agar aman, Anda dapat menggunakan istilah octet - octet selalu, selalu, delapan bit.
Kebingungan sebenarnya di sini membingungkan dua pertanyaan: 1. Berapa jumlah bit dalam satu byte? 2. Jika saya ingin mentransfer satu byte dari satu tempat ke tempat lain, atau jika saya ingin menyimpan byte, menggunakan cara fisik praktis, bagaimana saya melakukannya? Pertanyaan kedua biasanya kurang menarik bagi Anda, kecuali jika Anda bekerja di perusahaan yang membuat modem, atau hard drive, atau drive SSD. Dalam praktiknya Anda tertarik pada pertanyaan pertama, dan untuk pertanyaan kedua Anda hanya mengatakan "baiklah, seseorang memperhatikan hal itu".
Bit paritas yang disebutkan adalah mekanisme primitif yang membantu mendeteksi bahwa ketika byte disimpan dalam memori, dan kemudian byte dibaca, memori telah berubah karena beberapa kecelakaan. Itu tidak terlalu bagus dalam hal itu, karena tidak akan menemukan bahwa dua bit telah diubah sehingga perubahan cenderung tidak terdeteksi, dan itu tidak dapat pulih dari masalah karena tidak ada cara untuk mengetahui mana dari 8 bit yang telah berubah , atau bahkan jika bit paritas telah berubah.
Bit paritas secara praktis tidak digunakan dalam bentuk primitif itu. Data yang disimpan secara permanen biasanya dilindungi dengan cara yang lebih rumit, misalnya dengan menambahkan checksum 32 bit atau lebih lama ke blok 1024 byte - yang membutuhkan ruang lebih sedikit (0,4% dalam contoh ini, bukan 12,5%) dan jauh kecil kemungkinannya untuk tidak mencari tahu ketika ada sesuatu yang salah.
sumber
WORD
, yang ... agak membuktikan maksud Anda, karena banyak nama tipe WinAPI sudah usang tetapi disimpan untuk kompatibilitas ke belakang. xPTerlepas dari jawaban yang sangat bagus yang diberikan di sini, saya terkejut bahwa tidak ada yang menunjukkan bahwa bit paritas atau bit koreksi kesalahan adalah definisi 'metadata' dan jadi bukan bagian dari byte itu sendiri.
Satu byte memiliki 8 bit !
sumber
Dalam penggunaan modern, byte adalah 8 bit, titik (walaupun secara historis memiliki definisi lain). Di sisi lain, kata data adalah apa pun yang ditangani perangkat keras sebagai unit atom - dapat berupa 8 bit, 9 bit, 10 bit, 12 bit, 16 bit, 20 bit, 24 bit, 32 bit, dll. Berbagai komputer sistem selama bertahun-tahun memiliki semua jenis ukuran kata yang berbeda.
Untuk menerapkan sistem memori atau protokol transmisi, ada baiknya menambahkan deteksi / koreksi kesalahan yang melibatkan bit tambahan. Mereka tidak menghasilkan byte 9-bit karena, seperti yang dinyatakan di atas, byte adalah 8 bit.
Berbagai skema menambah deteksi kesalahan dan / atau koreksi dengan berbagai cara.
Penggunaan paritas yang umum adalah menambahkan bit tambahan ke kata transmisi sehingga penerima dapat mendeteksi sedikit kesalahan.
Skema yang dapat memberikan koreksi kesalahan bit tunggal melibatkan penambahan 4 bit ECC per kata data 32 bit. Ini kebetulan setara dengan 1 bit per byte, tetapi tidak bisa / tidak berfungsi seperti itu. Satu kata data 36-bit dapat membawa informasi yang cukup untuk pulih dari kesalahan bit tunggal untuk ruang data 32-bit.
sumber
8 bit. Di dalam cpu dan keyboard, itu adalah 9 dan 11 bit. Data pengguna direpresentasikan dalam 8 bit. Tombol pada keyboard mengirim nyanyian yang terbagi menjadi 11 bit. 1 bit awal, 1 bit akhir, 1 bit paritas, dan 8 bit mewakili tombol yang ditekan.
sumber