2011-01-31 20 views
41

Estoy confundido ... ¿cuántos caracteres hay en un bit?¿Cuántos bits hay en un personaje?

+3

Su pregunta no tiene mucho sentido. Creo que un poco de contexto podría ayudar, ¿qué estás tratando de lograr? –

+47

¿Cuántos caracteres hay en bit? ¿Tres? b, yo y t –

+2

@Skurmedel: Tus cambios cambiaron el significado de la pregunta. ¡Los bits y los bytes son ** no ** lo mismo! –

Respuesta

9

Hay 8 bits en un byte (normalmente hablando en Windows).

Sin embargo, si se trata de caracteres, dependerá del juego de caracteres/codificación. El carácter Unicode puede ser de 2 o 4 bytes, por lo que sería de 16 o 32 bits, mientras que Windows-1252 a veces incorrectamente llamado ANSI es solo de 1 by 8 bits.

En la versión asiática de Windows y algunos otros, todo el sistema se ejecuta en doble byte, por lo que un carácter es de 16 bits.

EDITADO

comentario de por Matteo, todas las versiones actuales de Windows utilizan 16 bits por carácter interno.

+0

algunas aplicaciones heredadas todavía usan caracteres de 1 byte con páginas de códigos locales, pero todas las versiones NT de Windows se ejecutan internamente con caracteres de 2 bytes (UCS-2 hasta NT4, UTF-16 desde Windows 2000 en adelante, almacenado como 'wchar_t'), no solo asiáticos, y así deberían hacer todas las aplicaciones más nuevas. (En Linux, en cambio, es una historia completamente diferente ya que generalmente UTF-8 se usa en todo el sistema) –

+0

@Matteo: Tenga en cuenta que en Windows, el doble byte no es necesariamente lo mismo que Unicode. [Referencia] (http://msdn.microsoft.com/en-us/library/cc194788.aspx) –

+0

@Cody Gray: sí, generalmente cuando lee la codificación de "doble byte", es material asiático heredado, y se almacenan como múltiples 'char', mientras que las cadenas Unicode se almacenan usando el tipo' wchar_t'. Por cierto, cuando se inició NT un 'wchar_t' era suficiente para evitar pares de sustitución, pero ahora que es UTF-16, incluso las cadenas' wchar_t' pueden tener caracteres de longitud variable, por lo que en Windows un caracter Unicode puede tomar de 2 a 4 bytes (1 o 2 'wchar_t'). –

98

depende de lo que es el personaje y lo que lo codifica se encuentra en:

  • un carácter ASCII en la codificación ASCII de 8 bits es de 8 bits (1 byte), aunque puede caber en 7 bits.

  • Un carácter ISO-8895-1 en la codificación ISO-8859-1 es de 8 bits (1 byte).

  • Un carácter Unicode en la codificación UTF-8 está entre 8 bits (1 byte) y 32 bits (4 bytes).

  • Un carácter Unicode en la codificación UTF-16 está entre 16 (2 bytes) y 32 bits (4 bytes), aunque la mayoría de los caracteres comunes toman 16 bits. Esta es la codificación utilizada internamente por Windows.

  • Un carácter Unicode en la codificación UTF-32 siempre es de 32 bits (4 bytes).

  • Un carácter ASCII en UTF-8 es de 8 bits (1 byte), y en UTF-16 - 16 bits.

  • Los caracteres adicionales (no ASCII) en ISO-8895-1 (0xA0-0xFF) tomarían 16 bits en UTF-8 y UTF-16.

Eso significa que hay entre 0.03125 y 0.125 caracteres en un bit.

+0

Esta respuesta ayuda mucho cuando se trata de sockets, codificación, texto, etc. –

Cuestiones relacionadas