Quantos bits ou bytes existem em um personagem? [fechadas]


94

Quantos bits ou bytes existem por "caractere"?


1
Sua pergunta e título pedem coisas diferentes. Enfim, eu não entendo você, pode me explicar melhor?
galymzhan

Sim, eu também não tinha certeza disso. Mas byte é mais consistente com seu título. Quantidade de caracteres em um bit faz pouco sentido, mas quantos bits em um caractere fazem mais sentido. Porém, requer contexto, como mencionado acima.
Skurmedel

4
@Skurmedel: Como você descobre? O título também dizia "bits".
Cody Gray

@Cody Gray: Veja minha resposta editada. Suas tags dizem byte, então percebi que era um erro de digitação. Eu posso estar errado embora.
Skurmedel

@Skurmedel: Não entendo ... Você não postou uma resposta para a pergunta. E sim, eu não percebi a tag antes. Mas ainda estou inclinado a pensar que 2/3 é uma combinação melhor do que 1/3.
Cody Gray

Respostas:


195

Depende de qual é o caractere e em qual codificação ele está:

  • Um caractere ASCII na codificação ASCII de 8 bits tem 8 bits (1 byte), embora possa caber em 7 bits.

  • Um caractere ISO-8895-1 na codificação ISO-8859-1 tem 8 bits (1 byte).

  • Um caractere Unicode na codificação UTF-8 tem entre 8 bits (1 byte) e 32 bits (4 bytes).

  • Um caractere Unicode na codificação UTF-16 tem entre 16 (2 bytes) e 32 bits (4 bytes), embora a maioria dos caracteres comuns possua 16 bits. Esta é a codificação usada pelo Windows internamente.

  • Um caractere Unicode na codificação UTF-32 é sempre de 32 bits (4 bytes).

  • Um caractere ASCII em UTF-8 tem 8 bits (1 byte) e em UTF-16 - 16 bits.

  • Os caracteres adicionais (não ASCII) em ISO-8895-1 (0xA0-0xFF) levariam 16 bits em UTF-8 e UTF-16.

Isso significaria que existem entre 0,03125 e 0,125 caracteres em um bit.


Essa resposta ajuda muito ao lidar com sockets, codificação, texto e assim por diante.
Mário Meyrelles 28/06/2016

17

Existem 8 bits em um byte (normalmente falando no Windows).

No entanto, se você estiver lidando com caracteres, dependerá do conjunto de caracteres / codificação. O caractere Unicode pode ter 2 ou 4 bytes, de modo que seria 16 ou 32 bits, enquanto o Windows-1252, às vezes chamado incorretamente de ANSI, tem apenas 1 bytes, portanto, 8 bits.

Na versão asiática do Windows e em algumas outras, todo o sistema é executado em byte duplo, portanto, um caractere tem 16 bits.

EDITADO

De acordo com o comentário de Matteo, todas as versões contemporâneas do Windows usam 16 bits internamente por caractere.


alguns aplicativos legados ainda usam caracteres de 1 byte com páginas de código locais, mas todas as versões do Windows NT são executadas internamente com caracteres de 2 bytes (UCS-2 até NT4, UTF-16 do Windows 2000 em diante, armazenados como wchar_t), não apenas os asiáticos, e o mesmo deve acontecer com todos os aplicativos mais recentes. (No Linux, em vez disso, é uma história completamente diferente, já que normalmente UTF-8 é usado em todo o sistema)
Matteo Italia

@Matteo: Observe que no Windows, byte duplo não é necessariamente a mesma coisa que Unicode. Referência
Cody Gray

@Cody Gray: sim, geralmente quando você lê a codificação de "byte duplo", é material asiático legado, e eles são armazenados como múltiplos char, enquanto as strings Unicode são armazenadas usando o wchar_ttipo. A propósito, quando o NT foi iniciado, um wchar_tera o suficiente para evitar pares substitutos, mas agora que é UTF-16, até mesmo wchar_tstrings podem ter caracteres de comprimento variável, portanto, no Windows, um caractere Unicode em pode levar de 2 a 4 bytes (1 ou 2 wchar_t)
Matteo Italia

@Matteo: Sim, concordo com você. Acho que vi algo que sugeria de forma diferente antes de você editar seu primeiro comentário, e foi então que escrevi o meu. As strings Unicode UTF-16 são usadas internamente agora para todas as versões do Windows.
Cody Gray

@Cody Gray: Eu tendo a editar meus comentários um pouco demais, isso leva à confusão :)
Matteo Italia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.