Berapa bit atau byte yang ada dalam sebuah karakter? [Tutup]


96

Berapa banyak bit atau byte yang ada per "karakter"?


1
Pertanyaan dan judul Anda menanyakan hal yang berbeda. Bagaimanapun, saya tidak mengerti Anda, dapatkah Anda menjelaskan lebih lanjut?
galymzhan

Ya, saya juga tidak yakin tentang itu. Tapi byte lebih konsisten dengan gelarnya. Jumlah karakter dalam satu bit sedikit masuk akal, tetapi berapa banyak bit dalam karakter lebih masuk akal. Ini membutuhkan konteks, seperti yang disebutkan di atas.
Skurmedel

4
@ Skurmedel: Bagaimana menurutmu? Judulnya juga mengatakan "bit".
Cody Gray

@Cody Grey: Lihat jawaban saya yang diedit. Tag-nya mengatakan byte, jadi saya pikir itu salah ketik. Saya mungkin salah.
Skurmedel

@ Skurmedel: Saya tidak mengerti ... Anda belum memposting jawaban untuk pertanyaan itu. Dan ya, saya tidak melihat labelnya sebelumnya. Tapi saya masih cenderung berpikir bahwa 2/3 adalah pertandingan yang lebih baik daripada 1/3.
Cody Grey

Jawaban:


200

Itu tergantung apa karakter dan pengkodeannya:

  • Karakter ASCII dalam pengkodean ASCII 8-bit adalah 8 bit (1 byte), meskipun dapat ditampung dalam 7 bit.

  • Karakter ISO-8895-1 dalam pengkodean ISO-8859-1 adalah 8 bit (1 byte).

  • Karakter Unicode dalam pengkodean UTF-8 adalah antara 8 bit (1 byte) dan 32 bit (4 byte).

  • Karakter Unicode dalam pengkodean UTF-16 adalah antara 16 (2 byte) dan 32 bit (4 byte), meskipun sebagian besar karakter umum mengambil 16 bit. Ini adalah pengkodean yang digunakan oleh Windows secara internal.

  • Karakter Unicode dalam pengkodean UTF-32 selalu 32 bit (4 byte).

  • Karakter ASCII dalam UTF-8 adalah 8 bit (1 byte), dan dalam UTF-16 - 16 bit.

  • Karakter tambahan (non-ASCII) dalam ISO-8895-1 (0xA0-0xFF) akan membutuhkan 16 bit dalam UTF-8 dan UTF-16.

Itu berarti ada antara 0,03125 dan 0,125 karakter dalam satu bit.


Jawaban ini sangat membantu saat berhadapan dengan soket, pengkodean, teks, dan sebagainya.
Mário Meyrelles

17

Ada 8 bit dalam satu byte (biasanya di Windows).

Namun, jika Anda berurusan dengan karakter, itu akan tergantung pada charset / encoding. Karakter unicode bisa 2 atau 4 byte, jadi itu akan menjadi 16 atau 32 bit, sedangkan Windows-1252 kadang kadang salah disebut ANSI hanya 1 byte jadi 8 bit.

Di Windows versi Asia dan beberapa lainnya, seluruh sistem berjalan dalam byte ganda, jadi karakternya adalah 16 bit.

DIEDIT

Menurut komentar Matteo, semua versi Windows kontemporer menggunakan 16-bit secara internal per karakter.


beberapa aplikasi lama masih menggunakan karakter 1 byte dengan codepages lokal, tetapi semua versi Windows NT dijalankan secara internal dengan karakter 2-byte (UCS-2 hingga NT4, UTF-16 dari Windows 2000 dan seterusnya, disimpan sebagai wchar_t), tidak hanya versi Asia, dan harus melakukan semua aplikasi yang lebih baru. (Di Linux, sebaliknya, ini adalah cerita yang sama sekali berbeda karena biasanya UTF-8 digunakan di seluruh sistem)
Matteo Italia

@Matteo: Perhatikan bahwa di Windows, byte ganda belum tentu sama dengan Unicode. Referensi
Cody Gray

@Cody Grey: ya, biasanya ketika Anda membaca "double-byte" encoding, itu adalah warisan Asia, dan mereka disimpan sebagai beberapa char, sementara string Unicode disimpan menggunakan wchar_ttipe. Ngomong-ngomong, ketika NT dimulai, wchar_tsudah cukup untuk menghindari pasangan pengganti, tetapi sekarang wchar_tstring UTF-16 itu dapat memiliki karakter dengan panjang variabel, jadi pada Windows, karakter Unicode dapat mengambil dari 2 hingga 4 byte (1 atau 2 wchar_t).
Matteo Italia

@ Matteo: Ya, saya setuju dengan Anda. Saya rasa saya melihat sesuatu yang disarankan secara berbeda sebelum Anda mengedit komentar pertama Anda, dan saat itulah saya menulis komentar saya. String UTF-16 Unicode sekarang digunakan secara internal untuk semua versi Windows.
Cody Gray

@Cody Grey: Saya cenderung mengedit komentar saya terlalu banyak, itu menyebabkan kebingungan:)
Matteo Italia
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.