Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Char com 2...

Ola...

por que char tem tamanho de 2 bytes ? o tipo char nao segue a tabela ASCII, ou seja 256 caracteres ?

Existe alguma tabela de caracteres com 65535 simbolos ?

David

4 respostas

O Char tem 2 bytes para poder contemplar todos os idiomas, como por exemplo o caractere do português "ç" que apesar de ser 1 letra, ocupa 2 bytes por causa da acentuação.

Atualmente é mais comum utilizar a tabela UTF-8 no lugar da ASCII, pois ela é compativel com ASCII e consegue represetar até 1.112.064 caracteres.

Ola Cleonor,

na tabela ASCII, o "ç" é o codigo 135 (ou 128 se maiusculo). E o numero de combinacao de 2 bytes pode chegar no maximo em 65535 (ou seja, 256x256 menos o zero, ou FF FF en hexa), e nao 1.112.064.

O padrao UTF-8 usa 4 bytes, e nao 2 como o tipo char (justamente, a minha pergunta)

Porque o tipo Char é 2 bytes ? (0 à FFFF) ?

David

solução!

Boa noite, David.

ASCII representa 127 caracteres usando 7 bits. A ISO - 8859 representa os caracteres especiais (1 byte - usa o oitavo bit para aumentar o número de caracteres representáveis), 'estendendo' a tabela ASCII.

UTF (Unicode Transformation Format) é tipo de codificador de caracteres dos code points da 'tabela' Unicode (chega a mais de 2 bilhões de caracteres possíveis):

● UTF - 8: Representação de forma variável. Usa 8 bits para representar 1 caractere.

● UTF - 16: Representação de forma variável. Usa 16 bits pra representar 1 caractere.

● UTF - 32: Variação fixa. Sempre utiliza 32 bits.

Tanto Unicode quanto ASCII são um padrão de codificação de caracteres, sendo o primeiro 'universal' e o segundo abrangendo as letras mais primitivas do ocidente.

Respondendo sua pergunta: o tipo Char pode representar caractere Unicode com codificação UTF-16, por isso 2 bytes. A complexidade do caractere vai definir quantos bits ele vai consumir. Lembrando que o computador não conhece caractere, conhece binário.

Obrigado Silva.

Sempre pensei que char fosse 1 byte... Mas agora ficou mais claro.

David