1DWXUH]DGD,QIRUPDomR
Aula 4: Códigos (parte 1)
Profª Debora Medeiros
Bacharelado em Ciência e TecnologiaUniversidade Federal do ABC Setembro 2012
*Material gentilmente cedido pela Profa. Ana Carolina Lorena
5HSUHVHQWDomRFRPELW
Um bit: útil para situações com duas
possibilidades
Jogar uma moeda
Cara ou coroa Gênero de uma pessoa
Feminino ou masculino
Veredito de juri
Inocente ou culpado
Verdade de asserção
Verdade ou falso
Maioria das situações reais é mais complicada cadeias de bits
0RGHORGHVLVWHPDGHFRPXQLFDomR
Modelo simplificado
Entrada
(símbolos) Codificador (Cadeias de bits) Canal (Cadeias de bits) Decodificador Saída (símbolos)
&yGLJRV
Como desenvolver?
Letras: EBCDIC, ASCII, Unicode, BCD, Morse
Inteiros: binário, Gray, complemento de 2
Números: ponto flutuante
Proteínas: código genético
Telefones: NANP, códigos internacionais
Hosts: ethernet, IP, nomes de domínio
Imagens: TIFF, GIF, JPEG
Audio: MP3
Video: MPEG
7DPDQKRGRHVSDoRGHVtPERORV
Dependendo do número de símbolos que precisa
codificar diferentes considerações
Número de símbolos em um código =
tamanho
do espaço de símbolos
Alguns tamanhos que serão considerados:
2 Potência de 2 Finito Infinito, contável Infinito, incontável7DPDQKRGRHVSDoRGHVtPERORV
Número de símbolos n = 2
Pode ser codificado com um único bit
Número de símbolos n = potência de 2
Pode ser codificado com log
2n bits
Ex.: 2 bits para naipe de cartas (log24) 5 bits para um estudante dentre uma classe com 32 alunos (log232)
7DPDQKRGRHVSDoRGHVtPERORV
Número de símbolos n = finito, mas não potência
de 2
Pode ser codificado com número de bits de próximo
inteiro superior, que é potência de 2
Ex.: 3 bits para resultado de um dado (log28)
Leva a algumas sequências de bits não utilizadas
Ex.: usa só de 000 a 101 para o dado Dois não são usados: 110 e 111
7DPDQKRGRHVSDoRGHVtPERORV
Número de símbolos n = infinito contável
Infinito contável: pode ser mapeado em relação
um-a-um com os inteiros
Cadeia de bits pode denotar apenas número finito dos
símbolos
Ex.: 4 bits podem representar os inteiros 0 a 15
Deve lidar de alguma forma com overflows
Na maioria dos computadores pessoais (32 bits), maior inteiro representável é 4.294.967.295 Nos computadores de 64 bits, esse número é maior
(18 446 744 073 709 551 615)
7DPDQKRGRHVSDoRGHVtPERORV
Número de símbolos n = infinito incontável
Ex.: voltagem, pressão
Deve ser usada técnica para substituir por um número
finito de valores que é aproximadamente o mesmo
Ex.: Representando números entre 0 e 1 com dois bits
Aproximação não é reversível
0 0,25 0,5 0,75 1
0,125 0,375 0,625 0,875 00 01 10 11
Mas, usando número grande de bits, decodificação pode ser feita para número próximo o suficiente (ex. representação floating-point)
3RQWRIOXWXDQWH
Floating point: formato de representação digital
de números reais usado nos computadores
Números são representados na forma:
Base usada em computadores é 2
Consegue representar mais valores que notações de
ponto fixo e inteiros
Dígitos significativos x base
expoente3RQWRIOXWXDQWH
Exemplos:
Representação de ponto fixo com sete dígitos e duas
casas decimais pode representar os números
12345.67, 123.45, 1.23, etc
Representação de ponto flutuante (padrão IEEE754)
com sete dígitos decimais representa também
1.234567, 123456.7, 0.00001234567,
1234567000000000, etc
8VRGHFDSDFLGDGHH[WUD
Situações em que há mais padrões de código
que número de símbolos
Ex. inteiros que não são potência de 2
O que fazer com os bits adicionais?
1.
Ignorar
2.
Mapear para outros valores
3.
Reservar para futura expansão
4.
Usar para códigos de controle
5.
Usar para abreviações comuns
&yGLJR%&'
Binary Coded Decimal
Sistema de representação dos dígitos decimais de
0 até 9 com um código binário de 4 bits
Ex.: inteiro decimal 834 em BCD é 1000 0011 0100 ; 0,764 é 0.0111 0110 0100 em BCD • Menos eficiente que o código binário puro (mais bits para representar mesmo número)
Ex.: 83 = 1000 0011 BCD = 10100112 • Operações aritméticas com BCD também são
mais complexas • Há padrões desperdiçados • Mas entendimento é mais fácil
&yGLJR%&'
Alternativas para lidar com os bits extra:
1.
Ignorando padrões de bits extra
Decodificador retorna nada ou Decodificador sinaliza erro
2.
Mapeando para valores legais
Todos os extras representam o dígito 9 ou
Decodifica extras para 2, 3, 4, 5, 6, 7, supondo que o bit
inicial deve ser o incorreto
&yGLJRJHQpWLFR
Genes são regiões das cadeias de DNA
Unidades fundamentais que carregam a informação
de hereditariedade
Informação codificada nos genes direciona a
manutenção e o desenvolvimento das células e
organismos
&yGLJRJHQpWLFR
Moléculas de DNA são formadas por duas cadeias
interconectadas de nucleotídeos
Cada nucletídeo é composto de: Açúcar Fosfato
Uma de quatro bases
Adenina (A) Guanina (G) Citosina (C) Timina (T)
Cada molécula pode ter centenas de
milhares de nucleotídeos
&yGLJRJHQpWLFR
Cadeias individuais são interconectadas por
pareamen-tos entre as bases em uma estrutura de dupla hélice
Regras de pareamento: • C com G
• A com T
&yGLJRJHQpWLFR
Informação dos genes realiza um caminho da
entrada até a saída:
DNA (genes) mRNA ribossomo/tRNA
proteína
Proteína é o produto final
&yGLJRJHQpWLFR
Mensagem genética é comunicada do DNA
no núcleo da célula para os ribossomos
fora do núcleo via o mRNA (RNA
mensageiro)
Ribossomos auxiliam na construção da proteína
Transcrição é o processo no qual mRNA é
gerado a partir do DNA
&yGLJRJHQpWLFR
mRNA é cadeia única de nucleotídeos
Igual a DNA exceto por diferenças no açúcar e no
nucleotídeo Timina, que é substituído por Uracila
(U)
Mesmas regras de pareamento, com T
substituído por U Regras de pareamento: • C com G • A com U
&yGLJRJHQpWLFR
T A C G G C T C C G G A C T C C A T . . . 51$3ROLPHUDVH SURPRWRU7UDQVFULomR
'1$
P51$
7
$
&yGLJR*HQpWLFR
TACGG C T C C G G A C T C C A T . . . 51$3ROLPHUDVH SURPRWRU7UDQVFULomR
$
&*$**&&8*$**8$
'1$
P51$
8
*
&
&yGLJRJHQpWLFR
Proteínas:
Componentes estruturais do corpo
Ex.: fibras dos músculos
Componentes funcionais
Ex.: enzimas (regulam processos bioquímicos)
Acredita-se que todas atividades celulares envolvem proteínas
&yGLJRJHQpWLFR
Proteínas são constituídas de cadeias de
polipeptídeos, que são cadeias de aminoácidos
Aminoácidos são componentes orgânicos com um
átomo central de carbono e:
Um átomo de hidrogêneo H Um grupo amina NH2 Um grupo carboxila COOH
&yGLJRJHQpWLFR
Cadeias laterais variam de um único hidrogêneo
(aminoácido glicina) a estruturas com até 18
átomos (arginina)
&yGLJRJHQpWLFR
mRNA é traduzido no corpo da célula em
cadeia de aminoácidos (proteínas)
Com auxílio de ribossomos e moléculas de tRNA
Ribossomo “prende” mRNA tRNA (RNA transportador) coloca o aminoácido
apropriado na proteína
&yGLJRJHQpWLFR
T A C G G C T C C G G A C T C C A T . . . 51$3ROLPHUDVH SURPRWRU7UDQVFULomR
$8*&&*$**&&8*$**8$
'1$
P51$
0HW
5LERVVRPR
$8*
7UDGXomR
códon&yGLJRJHQpWLFR
T A C G G C T C C G G A C T C C A T . . . 51$3ROLPHUDVH SURPRWRU7UDQVFULomR
$8*&&*$**&&8*$**8$
'1$
P51$
7UDGXomR
5LERVVRPR
9DO
*OX
3UR
$UJ
3UR
0HW
&yGLJRJHQpWLFR
&yGLJRJHQpWLFR
Há 20 tipos de aminoácidos que precisam
ser codificados por 4 diferentes bases
Uma base só: 4 possibilidades
×
Duas bases: 4 . 4 = 16 possibilidades
×
Três bases: 4 . 4 . 4 = 64 possibilidades
Códon
Código possui bastante redundância
Razões biológicas
&yGLJRJHQpWLFR
3 códons são de parada (indicam fim da proteína) = código de parada (informação de controle)
&yGLJRJHQpWLFR
Resumindo:
Difícil haver milhões de estruturas de manufatura de
proteínas, uma para cada tipo de proteína
Alternativa: procedimento genérico monta proteínas
Guiado por descrição contida no DNA
Código genético é uma descrição de como uma sequência
de nucleotídeos especifica um aminoácido
Proteína pode ser especificada por uma sequência linear de nucleotídeos
Representação padrão permite o mesmo aparato de
montagem para muitas diferentes proteínas
&yGLJRJHQpWLFR
Resumindo:
Código genético possui bastante redundância
Vários códons para um mesmo aminoácido Usada para prevenir de mutações
Mas código genético
não
possui ambiguidade
Cada códon corresponde a exatamente um tipo deaminoácido
&yGLJRWHOHI{QLFR
Reserva de capacidade extra de códigos para
expansão
At&t, 1947, códigos de área com 3 dígitos, com restrições:
Primeiro não poderia ser 0 ou 1
Evitar conflitos com 0 (conectando ao operador) e 1 (efeito
inesperado de discadores)
Dígito do meio poderia ser apenas 0 ou 1
0: províncias com um código de área apenas 1: províncias com mais de um código de área
Dois últimos dígitos não podiam ser iguais
Foram para números de emergência, por serem mais fáceis de
lembrar
Ex.: 911
Apenas 144 códigos de área possíveis
&yGLJRWHOHI{QLFR
At&t, 1947:
Inicialmente, dos 144 usou 86
Números mais fáceis de discar foram para distritos com
mais chamadas
Ex.: 212 para Manhattan
Outros 58: reservados para expansão
Capacidade não foi adequada 1995: restrição de dígito do meio ser 0 ou 1 apenas foi relaxada
&yGLJRWHOHI{QLFR
At&t, restrições atuais:
Primeiro dígito não pode ser 0 ou 1
Dígito do meio não pode ser 9
Dois últimos dígitos não podem ser os mesmos
(QGHUHoRV,3
Internet Protocol
Atribuídos por IANA (Internet Assigned Numbers
Authority)
Cada nome de domínio é associado a um único
endereço de IP
Atualmente 32 bits: 4 blocos de números – de 0 a 255 –
separados por pontos (versão 4)
Exemplo: 207.46.250.119
cada endereço de Internet pode ser codificado com 32 bits
Desenvolvido para ter capacidade de expansão
(QGHUHoRV,3
Explosão de interesse na Internet
Haverá necessidade de endereços até mesmo
para aparelhos eletrodomésticos no futuro!
Resultado: IP versão 6 (IPv6)
Endereços ainda na forma x.x.x.x, mas cada x é número
de 32 bits entre 0 e 4.294.927.295
128 bits
Endereços existentes não mudarão, mas equipamentos
de rede terão que mudar
&yGLJR$6&,,
American Standard Code for Information
Interchange
Código de caracteres mais usado
8 bits para cada caractere
Uso de padrões de códigos sobressalentes para
operações de formatação e controle
&yGLJR$6&,,
33 códigos são específicos para controle
95 são para caracteres
26 letras maiúsculas
26 letras minúsculas
10 dígitos
Espaço
32 pontuações
&yGLJR$6&,,
Para representar linguagens asiáticas, mais
caracteres são necessários
Número total de caracteres, incluindo-os, deve
ser menor que 65.536
Podem ser codificados com 16 bits (2 bytes): Unicode
5HIHUrQFLDV
Material de:
Wikipedia
1DWXUH]DGD,QIRUPDomR
Aula 4: Códigos (parte 2)
Profª Debora Medeiros
Bacharelado em Ciência e TecnologiaUniversidade Federal do ABC Setembro 2012
*Material gentilmente cedido pela Profa. Ana Carolina Lorena
(VWUDWpJLDVQRGHVHQYROYLPHQWRGH
FyGLJRV
Muitos códigos são desenvolvidos por humanos
Alguns são bastante robustos, simples, fáceis de
trabalhar e extensíveis
Mais fácil quando precisa representar poucos símbolos
Outros são frágeis, misteriosos, complexos e
resistentes a generalizações
Alguns códigos de sucesso acabam sendo
padronizados
(VWUDWpJLDVQRGHVHQYROYLPHQWRGH
FyGLJRV
ASCII: casos interessantes
Tem dois caracteres originalmente desenvolvidos para
serem ignorados
ASCII começou como um padrão de 7 bits de furos em
um papel para armazenar informações de teletipos
Teletipo: máquina de escrever eletromecânica para transmissão de dados
(VWUDWpJLDVQRGHVHQYROYLPHQWRGH
FyGLJRV
Teletipo e ASCII
Havia uma linha inicial de guia sem perfurações. Equivalendo a 0000000 e deveria ser ignorada na leitura (NUL)
Quando ASCII passou a ser usado em computadores, outros significados foram dados a NUL
Unix: fim de palavra
Outro que deveria ser ignorado: 1111111 (DEL)
Para apagar erros
Atualmente o comum é usar para backspace
(VWUDWpJLDVQRGHVHQYROYLPHQWRGH
FyGLJRV
ASCII: outros casos interessantes
CR (carriage return) e LF (line feed): para mover para uma nova linha
Porque teletipo tinha mecanismos físicos diferentes para mover para cima ou esquerda
Sistemas modernos escolheram diferentes inter-pretações
Unix: LF = nova linha; ignora CR
Machitosh: usa CR e ignora LF Windows: usa ambos
(VWUDWpJLDVQRGHVHQYROYLPHQWRGH
FyGLJRV
Outro caso interessante: código de área telefônica
americano
Pressupostos iniciais causaram dificuldades posteriores
Mudança de dígito do meio para ser qualquer um levou a precisar de adaptações em alguns equipamentos Revisões de software e hardware foram necessárias
&yGLJRVGHWDPDQKRIL[RHYDULiYHO
Tamanho fixo
: uso de mesmo número de bits
para qualquer símbolo
versus
Tamanho variável
: deixar alguns símbolos serem
menores do que outros
&yGLJRVGHWDPDQKRIL[RHYDULiYHO
Tamanho fixo
:
Fáceis de lidar: codificador e decodificador sabem com
quantos bits devem lidar
Podem ser transmitidos e interpretados paralelamente
Ex.: Vários cabos paralelos
Tamanho variável
(deixar alguns símbolos serem
menores do que outros)
Decodificador deve usar os valores dos bits para determinar
quando o símbolo começa e/ou termina
Útil quando alguns símbolos ocorrem com maior frequência
que outros
7UDQVPLVVmRSDUDOHODHVHULDO
Paralela
: bits de um símbolo transmitidos todos
simultaneamente
Serial
: stream de bits
Decodificador deve decidir como os bits são usados
Framing error: decodificador não sabe quando um símboloinicia e/ou termina
Adição de bits de parada entre os envios
7UDQVPLVVmRVHULDO
ϭ([HPSORVGHLQIRUPDomRWUDQVPLWLGD
GHPRGRVHULDO
Informação escrita
Informação falada
Código Morse
Internet
7UDQVPLVVmRSDUDOHOD
([HPSORVGHLQIRUPDomRWUDQVPLWLGD
HPSDUDOHOR
Barramentos do
computador
Sinais de trânsito
Expressões faciais
Marcas comerciais
Símbolos
Ideogramas
1RFpUHEURFDGDKHPLVIpULR
SURFHVVDXPWLSRGLIHUHQWHGH
LQIRUPDomR
A informação serial é
processada no
hemisfério esquerdo
A informação paralela é
processada no
hemisfério direito
7H[WR
Pode ser interessante código de tamanho variável
Atribui sequências pequenas a símbolos mais comuns
E longas para símbolos incomuns
Em média mensagens menores
7H[WR
Frequência de letras em Inglês
Interessante considerar códigos menores para:
E, T, A, O e N
7H[WR
Frequência de letras em Português
Interessante considerar códigos menores para:
A, E, O, S e R
7H[WR
Código de tamanho variável:
Tomar cuidados como:
Código pequeno não deve ser parte de início de qualquer
código longo
Ou decodificador não consegue distingui-los
Em texto, na prática o benefício não foi suficiente
para justificar a maior complexidade
Textos são normalmente codificados com códigos de
tamanho fixo
Como ASCII Exceção: código Morse
&yGLJR0RUVH
Desenvolvido para uso em telégrafos
Mais tarde em comunicações de rádio (antes de
AM carregar voz)
Até 1999: modo de comunicação requerido em
navios de oceanos
Mesmo que raramente utilizado
Habilidade de enviar e receber código Morse ainda
é requisito para cidadãos americanos que querem
uma licença de rádio-amador
&yGLJR0RUVH
Sequência de pulsos (ou tons) curtos e longos
(pontos e traços) separados por períodos curtos
de silêncio
Estabelecendo e quebrando uma conexão elétrica em
uma chave
Foi desenvolvido originalmente para ser escutado, não
visto
E para língua Inglesa
Atribui sequências menores a letras mais comuns
&yGLJR0RUVH
http://www.glassgiant.com/geek/morse/
&yGLJRVLQWHLURV
Há várias maneiras para representar inteiros com bits
Todos são incapazes de representar númerosarbitrariamente grandes
Fora do intervalo: overflow
Mais comuns:
Código binário para inteiros sem sinal
Ex. endereços de memória
Complemento de 2 para inteiros com sinal
Ex. aritmética
Código Gray binário para instrumentos que medem
quantidades mutáveis
&yGLJRVLQWHLURV
Dígito mais significativo (MSB– Most Significative
Bit): à esquerda
Dígito menos significativo (LSB– Less Significative
Bit): à direita
&yGLJRELQiULR
Para inteiros não negativos
Código de tamanho n: 2
npadrões (símbolos)
Inteiros 0 a 2n-1&yGLJR*UD\ELQiULR
Para inteiros não negativos
Código de tamanho n: 2
npadrões de código
Inteiros 0 a 2n-1
Dois padrões para inteiros adjacentes diferem
exatamente de um bit
Útil para sensores onde o inteiro sendo medido
pode mudar enquanto medida está sendo feita
&yGLJR*UD\ELQiULR
Montando:
Recursivamente
Refletindo a lista para n-1
(i.e., em ordem reversa)
Concatenando a lista original
com a lista reversa
Prefixando as entradas na lista
original com 0 e
Prefixando as entradas na lista
refletida com 1
6LQDOPDJQLWXGH
Código para inteiros positivos e
negativos
Código de tamanho n: 2
npadrões de código
Inteiros -(2n-1-1) a 2n-1-1 MSB é 0 para números positivos e 1 para
negativos
Outros bits dão magnitude
Simples, mas com padrões “estranhos” Ex +0 e -0
&RPSOHPHQWRGH
Para inteiros positivos e negativos
Código de tamanho n: 2
npadrões de
código
Inteiros -2n-1a 2n-1-1
LSB é 0 para números pares e 1 para números
ímpares e MSB é 1 para negativos
Onde se sobrepõe ao binário, é igual a ele Negativos são complemento de 2
Inverte bits e soma 1 Muito usado
Computadores usam
Não precisa checar sinal em aritmética
&RPSOHPHQWRGH
Para inteiros positivos e negativos
Código de tamanho n: 2
npadrões de código
Inteiros -(2n-1 -1) a 2n-1-1 MSB é 0 para números positivos Números negativos são formados pelo
complemento de cada bit do inteiro positivo correspondente
Onde se sobrepõe ao binário, é igual a ele Estranho e pouco usado
Ex. +0 e -0
&RQFOXLQGR
Complemento de 2 é o sistema mais usado
para representação de números inteiros com
sinal nos computadores modernos
Possui uma única representação para o zero
Regras para soma e subtração são as mesmas
Desvantagem é ser um código assimétrico
5HIHUrQFLDV
Material de: