Bir karakterde kaç bit veya bayt vardır? [kapalı]


96

"Karakter" başına kaç bit veya bayt vardır?


1
Sorunuz ve başlığınız farklı şeyler ister. Her neyse, seni anlamıyorum, biraz daha açıklayabilir misin?
galymzhan

Evet, bundan da emin değildim. Ancak bayt, başlığıyla daha tutarlı. Bir bitteki karakter sayısı çok az mantıklıdır, ancak bir karakterdeki kaç bit daha mantıklıdır. Yine de yukarıda belirtildiği gibi bağlam gerektirir.
Skurmedel

4
@Skurmedel: Nasıl anlarsınız? Başlıkta da "bit" yazıyordu.
Cody Grey

@Cody Gray: Düzenlenmiş cevabıma bakın. Etiketlerinde bayt yazıyor, ben de yazım hatası olduğunu düşündüm. Yine de yanılıyor olabilirim.
Skurmedel

@Skurmedel: Anlamıyorum ... Soruya bir cevap vermedin. Ve evet, etiketi daha önce fark etmemiştim. Ama yine de 2 / 3'ün 1 / 3'ten daha iyi bir eşleşme olduğunu düşünme eğilimindeyim.
Cody Grey

Yanıtlar:


200

Karakterin ne olduğuna ve hangi kodlamada olduğuna bağlıdır:

  • 8 bit ASCII kodlamada bir ASCII karakteri 8 bittir (1 bayt), ancak 7 bit sığabilir.

  • ISO-8859-1 kodlamasında bir ISO-8895-1 karakteri 8 bittir (1 bayt).

  • UTF-8 kodlamasındaki bir Unicode karakteri, 8 bit (1 bayt) ile 32 bit (4 bayt) arasındadır.

  • UTF-16 kodlamasında bir Unicode karakteri 16 (2 bayt) ile 32 bit (4 bayt) arasındadır, ancak yaygın karakterlerin çoğu 16 bit alır. Bu, Windows tarafından dahili olarak kullanılan kodlamadır.

  • UTF-32 kodlamasındaki bir Unicode karakteri her zaman 32 bittir (4 bayt).

  • UTF-8'deki bir ASCII karakteri 8 bittir (1 bayt) ve UTF-16 - 16 bittir.

  • ISO-8895-1'deki (0xA0-0xFF) ek (ASCII olmayan) karakterler UTF-8 ve UTF-16'da 16 bit alacaktır.

Bu, bir bitte 0,03125 ile 0,125 karakter arasında olduğu anlamına gelir.


Bu cevap, soketler, kodlama, metin vb. İle uğraşırken çok yardımcı olur.
Mário Meyrelles

17

Bir baytta 8 bit vardır (normalde Windows'ta konuşulur).

Ancak, karakterlerle uğraşıyorsanız, bu karakter grubuna / kodlamaya bağlı olacaktır. Unicode karakteri 2 veya 4 bayt olabilir, bu da 16 veya 32 bit olurken, Windows-1252 bazen yanlış olarak ANSI olarak adlandırılan sadece 1 bayt, yani 8 bit olabilir.

Windows'un Asya sürümünde ve bazılarında, tüm sistem çift baytta çalışır, bu nedenle bir karakter 16 bittir.

DÜZENLENDİ

Matteo'nun yorumuna göre, Windows'un tüm çağdaş sürümleri, karakter başına dahili olarak 16 bit kullanır.


bazı eski uygulamalar, yerel kod sayfalarına sahip 1 baytlık karakterleri kullanmaya devam eder, ancak Windows'un tüm NT sürümleri dahili olarak 2 baytlık karakterlerle çalışır (UCS-2'den NT4'e kadar, UTF-16, Windows 2000'den itibaren, olarak depolanır wchar_t), yalnızca Asya'dakilerle değil, ve böylece tüm yeni uygulamaları yapmalıdır. (Bunun yerine Linux'ta, bu tamamen farklı bir hikaye çünkü genellikle tüm sistemde UTF-8 kullanıldı)
Matteo Italia

@Matteo: Windows'ta çift baytın Unicode ile aynı şey olmadığına dikkat edin. Referans
Cody Gray

@Cody Gray: evet, genellikle eski Asya öğelerini kodlayan "çift baytlı" okuduğunuzda ve bunlar çoklu olarak depolanırken char, Unicode dizeleri tür kullanılarak saklanır wchar_t. Bu arada, NT başlatıldığında a wchar_t, vekil çiftlerden kaçınmak için yeterliydi, ancak şimdi UTF-16 olduğu için wchar_tdizeler bile değişken uzunluklu karakterlere sahip olabilir, bu nedenle Windows'ta bir Unicode karakteri 2 ila 4 bayt (1 veya 2 wchar_t).
Matteo Italia

@Matteo: Evet, sana katılıyorum. Sanırım siz ilk yorumunuzu düzenlemeden önce farklı şekilde önerilen bir şey gördüm ve o zaman benimkini yazdım. UTF-16 Unicode dizeleri artık tüm Windows sürümleri için dahili olarak kullanılmaktadır.
Cody Grey

@Cody Gray: Yorumlarımı biraz fazla düzenleme eğilimindeyim, bu kafa karışıklığına yol açıyor:)
Matteo Italia
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.