Códigos Códigos Introdução Códigos Numéricos Códigos Decimais Códigos Ponderados Códigos Reflectidos Códigos Alfanuméricos Bits, Bytes & etc. 2 1
Viu-se como representar números usando apenas os dois símbolos 0 e 1. Mas há outro tipo de informação que é necessário representar. Por exemplo, uma cor, num sistema informático. A cor deste rectângulo em RGB é CDB966 CD num máximo de FF de Vermelho B9 num máximo de FF de Verde e 66 num máximo de FF de Azul 3 A solução para a representação de um determinado tipo de informação é a sua codificação utilizando os bits que forem necessários. Exemplo: Pretende-se representar o andar em que se encontra um elevador num prédio de 6 pisos: Duas caves, Rés-do-chão e mais três andares. São necessários pelo menos 3 bits porque 3 bits permitem 2 3 = 8 combinações. Usam-se 6 dessas 8 para representar os 6 pisos. 4 2
Por exemplo: Comprimento da palavra = 3 Palavra do código 5 A correspondência entre as entidades a representar e as configuraçõe chama-se código. Cada configuração dos bits do código é uma palavra de código. O número de bits da palavra é o comprimento do código. Uma restrição fundamental de um código é não haver codificações repetidas. 6 3
Para o mesmo exemplo pode-se escolher outro código: Neste código, cada palavra representa numericamente o piso, considerando que o R/C é o 0, a 1ª cave o -1 e a 2ª cave o -2. Não é obrigatório, mas este exemplo mostra que, por vezes, a codificação usa números e uma atribuição desses números. 7 Ainda para o mesmo exemplo um outro código: Neste código, cada palavra é representada por quatro bits em que dois deles valem 1 e os restantes dois, valem 0. Isto permite detectar erros. Se, por exemplo, se ler que o elevador está no piso 0001, há um erro e não se pode confiar nessa informação. Criou-se um código com redundância, isto é, que tem a possibilidade de ter excesso de informação para permitir detecção de incongruências. 8 4
Os códigos numéricos são os que permitem representar números. O que parece uma repetição do que já foi feito com a representação de números em binário. É uma outra forma de ver a mesma realidade quando isso é conveniente por causa do contexto. O código numérico mais simples consiste na representação de um número inteiro por uma palavra de código que é a sua representação em binário. 9 O Código Binário Natural (CBN) é um código desse tipo em que os números se codificam pela sua representação em binário com um certo número de bits, isto é com um certo comprimento igual para todos. CBN de 5 bits 10 5
É comum ter de codificar os algarismos da base 10. Por exemplo para os colocar num mostrador (de um relógio, máquina de calcular, ). O código BCD (Binary Codified Decimal) é um dos códigos que o permite. Tem o comprimento 4 para todas as palavras. Código BCD 11 A representação do número 358 em BCD será, portanto, 0011 0101 1000. Não confundir o código BCD com a representação em hexadecimal! Não confundir um número em BCD com um número binário! Código BCD 12 6
O Código BCD sendo uma codificação em binário tem os pesos correspondentes às potências da base associados a cada bit. Por isso é um Código Ponderado. Por exemplo, o algarismo 5 é codificado com 1 nas posições correspondentes aos pesos 4 e 1. 13 Há muitos outros códigos ponderados que podem ter inclusivamente, pesos negativos. 14 7
A característica principal dos Códigos Reflectidos, também chamados Códigos de Gray, é que duas posições sucessivas têm apenas um bit diferente. Isto tem aplicações significativas como se verá. Exemplifica-se com um código reflectido de 3 bits. 15 Construção de um código reflectido de n bits 1. Parte-se do de n-1 bits 2. Reflecte-se num espelho. 3. Acrescenta-se um bit para distinguir os dois lados do espelho. Daí o nome de Código Reflectido. Espelho 16 8
Construção de um código reflectido de 4 bits Espelhos ou Eixos de Simetria 17 Estes códigos permitem representar caracteres de texto, isto é, letras (minúsculas e maiúsculas), algarismos, sinais de pontuação, sinais aritméticos, símbolos financeiros como o $ ou o e outros sinais especiais (@ por exemplo). O mais conhecido é o ASCII (American Code for Information Interchange). 18 9
É, como se vê, um código de comprimento 7. Muitas vezes os caracteres são indicados pela sua representação hexadecimal. Por exemplo A é indicado por 41H. 19 O Código ASCII que foi normalizado como ISO-8859 não permite representar letras acentuadas (á, è, õ, ñ, ) caracteres especiais (æ, ß, ) nem caracteres de outras línguas. A solução inicial foi a de criar extensões ao ASCII, por exemplo a mais conhecida entre nós a ISO-8859-1 (ISO-Latin). Actualmente está em fase de generalização o uso de um novo código, o Unicode. 20 10
21 Bit O bit é, como se viu já, uma entidade que só pode assumir dois valores: 0 e 1. Byte e Nibble É usual designar por byte, um conjunto coerente de 8 bits. Por exemplo, um caracter ISO-8859-1 é representado por um byte. É também comum designar por nibble um conjunto coerente de 4 bits. Por exemplo, um dígito BCD é representado por um nibble. 22 11
Palavra À unidade mínima processada por um sistema digital chama-se palavra (word) o microprocessador Intel 8080, por exemplo, tinha palavras de 8 bits o microprocessador Motorola 68000 processa palavras de 16 bits os microprocessadores mais recentes usam palavras de 32, de 64 ou mesmo de 128 bits. 23 Os sistemas digitais necessitam de grandes quantidades de bits para representar informação, sendo por isso comum utilizar múltiplos de bytes (ou de bits, ou de palavras), por exemplo kb = 2 10 = 1024 byte (Quilobyte) MB = 2 20 byte = 1024 Kbyte (Megabyte) GB = 2 30 byte = 1024 Mbyte (Gigabyte) TB = 2 40 byte = 1024 Gbyte (Terabyte) PB = 2 50 byte = 1024 Tbyte (Petabyte) etc. 24 12
Livro recomendado, secções 13. e 1.4 Carlos Sêrro: Sistemas Digitais fundamentos algébricos, ISTPress 2003, Capítulo 2 A questão dos códigos é muito rica em aplicações e metodologias. Existem muitos livros sobre o assunto. A Internet é, como de costume, uma fonte que explorada com espírito crítico tem muito para dar. 25 13