Introdução à programação e aos algoritmos
1.7 Representação de Letras e Símbolos
EXERCÍCIO 1.17
Escreva os binários equivalentes a –215,5 usando o padrão IEEE 754 para precisão
simples e dupla.
EXERCÍCIO 1.18
Escreva os binários equivalentes a 0,1 usando o padrão IEEE 754 para precisão
simples e dupla.
1.7 REPRESENTAÇÃO DE LETRAS E
SÍMBOLOS
Os dígitos binários não representam apenas números no computador. Como foi dito anteriormente, o mundo do computador é um mundo no qual existe apenas 0 e 1. Deste modo, mesmo letras e símbolos devem também ter seu equivalente binário. Dependendo da situação, uma sequência de dígitos binários pode tanto representar um número quanto uma letra ou outra coisa qualquer. Além das letras comuns do alfabeto, a codificação deve também representar caracteres de controle, por exemplo, aquele que pula para a próxima linha, em uma impressão ou tabulação. Esses caracteres não são visíveis, mas seu efeito o é.
Uma tabela de conversão muito adotada nos primeiros computadores pessoais foi a tabela ASCII (sigla em inglês para American Standard Code for Information Interchange). Como os primeiros computadores pessoais foram desenvolvidos nos Estados Unidos, e a língua inglesa não possui caracteres acentuados, a tabela ASCII pôde ser baseada em apenas um byte, ou seja, 8 bits. Com 8 bits podemos representar 256 caracteres. Contudo, por motivos históricos, 128 símbolos eram suficientes, e isso também permitia economizar um bit na transmissão de mensagens. Desse modo, a tabela ASCII utiliza apenas 7 bits para codificar todos os seus caracteres. Se necessário o oitavo bit poderia ser usado para verificar se a transmissão dos outros 7 bits foi correta. Portanto, é possível validar a transmissão por meio de um “bit de paridade”, ou seja, o envio é feito de tal forma que exista sempre um número par ou ímpar de bits iguais a 1, caso seja escolhida a paridade par ou ímpar.
Com 128 números da tabela são representadas as 26 letras
maiúsculas de ‘A’ a ‘Z’; as 26 minúsculas de ‘a’ a ‘z’; os dígitos de ‘0’ a ‘9’; e as pontuações básicas, como vírgula e ponto, caracteres de controle, além do espaço em branco para separar as palavras. Desse modo, o caractere ‘0’ é representado pela sequência de bits 0110000 e a letra ‘a’ é representada pela sequência de bits 1100001. A escolha é totalmente arbitrária. Outros códigos são
possíveis, mas a tabela ASCII foi a que se impôs. A Tabela 1.6 mostra alguns exemplos da tabela ASCII.
Tabela 1.6 Alguns exemplos da codificação ASCII
dec. hexa carac dec. hexa carac dec. hexa carac
000 00 (nul) 047 2F / 070 46 F
007 07 (bel) 048 30 0 071 47 G
008 08 (bs) 049 31 1 072 48 H
009 09 (tab) 050 32 2 088 58 X
010 0A (lf) 051 33 3 089 59 Y
013 0D (cr) 052 34 4 090 5A Z
024 18 cancel 053 35 5 091 5B [
027 1B (esc) 054 36 6 092 5C \
032 20 (espaço) 055 37 7 093 5D ]
033 21 ! 056 38 8 094 5E ^
034 22 “ 057 39 9 095 5F _
035 23 # 058 3A : 096 60 `
036 24 $ 059 3B ; 097 61 a
037 25 % 060 3C < 098 62 b
038 26 & 061 3D = 099 63 c
039 27 ‘ 062 3E > 120 78 x
040 28 ( 063 3F ? 121 79 y
041 29 ) 064 40 @ 122 7A z
042 2A * 065 41 A 123 7B {
043 2B + 066 42 B 124 7C |
044 2C , 067 43 C 125 7D }
045 2D - 068 44 D 126 7E ~
046 2E . 069 45 E 127 7F DEL
Dica 1.1 – Não se preocupe com a codi cação de uma letra.
Não importa se a linguagem usa ASCII ou Unicode, muito raramente você deverá estar
consciente do valor numérico de uma letra dentro do seu computador. A maioria das
linguagens de programação converte automaticamente caracteres no valor correto.
Assim, por exemplo, nas linguagens C ou Python, basta escrever ‘a’ para que o
caractere seja convertido em sua representação binária correta. Somente se você
estiver desenvolvendo software básico ou programando em linguagens de baixo nível
haverá necessidade de se preocupar com a codi cação a ser usada.
Dica 1.2 – A codi cação de seu editor de texto é importante.
A maior parte das linguagens foi criada para processar letras em ASCII. Assim, ao
escrever as palavras da linguagem, você não tem de se preocupar com isso. Porém,
para ver uma saída impressa ou na tela de algum caractere acentuado, você deverá
identi car a codi cação que o seu editor de texto irá usar. As codi cações mais comuns
de caracteres latinos são a UTF-8 e a ISO8859-1. Mas basta ter identi cado a
codi cação utilizada. O valor de cada letra em binário continua sendo uma informação
irrelevante na maioria dos casos.
Com a evolução dos sistemas computacionais e a difusão em países falantes de outros idiomas diferentes do inglês, viu-se a necessidade de adotar um padrão que comportasse mais caracteres, inclusive os caracteres acentuados. A codificação Unicode foi adotada como padrão pela indústria de computação, por permitir a codificação de 1.114.112 caracteres, e, em sua última especificação, definir mais de 128 mil, abrangendo diversos idiomas e símbolos.
A codificação Unicode é mais complexa que uma simples tabela, pois permite a combinação de caracteres, e deixa detalhes, como tamanho, forma e estilo para outro software. O padrão Unicode define um método de mapeamento para caracteres denominado UTF (Formato de Transformação Unicode, do inglês Unicode Transformation Format).A partir deste método diversas codificações podem ser construídas, a mais utilizada sendo a chamada UTF-8, que maximiza a compatibilidade com a tabela ASCII. A UTF-8 utiliza de 1 a 4 bytes, permitindo representar qualquer caractere universal Unicode.