Capítulo 2 Representação de texto Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture
Objectivos Compreender como a informação textual pode ser representada em binário Compreender as motivação para a existência de múltiplas normas para representação de texto Conhecer as normas mais comuns para representar texto Saber representar um pequeno texto em binário de acordo com uma codificação e vice-versa Introdução aos Sistemas e Redes de Computadores 2
Representando caracteres [1] Código Morse Inventado por Samuel Finley Breese Morse, em 1838 Utilizado inicialmente no Telégrafo Americano Código Baudot Jean-Maurice-Émile Baudot, em 1874 Foi o primeiro código definido com o intuito de processar dados textuais Normalizado em 1932 como Alfabeto Telegráfico Internacional nº 2 Introdução aos Sistemas e Redes de Computadores 3
Representando caracteres [2] Código de Hollerith Hermann Hollerith, em 1880 Aplicado nas máquinas de tabular de Hollerith, utilizadas para processar os dados dos censos dos EUA de 1890 Primeira utilização de cartões perfurados para representar dados textuais Tecnologia base da IBM até aos anos 60 Introdução aos Sistemas e Redes de Computadores 4
Representando caracteres [3] Em aulas anteriores estudámos como representar números inteiros, com e sem sinal, em binário Estudámos também como representar números em virgula flutuante, com e sem sinal, em precisão simples e dupla Introdução aos Sistemas e Redes de Computadores 5
Representando caracteres [4] Vamos agora ver como representar outro tipo de informação (como caracteres alfanuméricos, caracteres especiais e códigos de controlo) E como pode um código binário representar simultaneamente números e caracteres? A interpretação dos dígitos binários depende do contexto Nas linguagens de programação o contexto é transmitido pelo tipo das variáveis (e.g., int, string) Introdução aos Sistemas e Redes de Computadores 6
Representando caracteres [5] Visando a troca consistente de informação entre computadores com diferentes arquitecturas, estabeleceu-se um conjunto de normas (algumas reais, outras de facto) para codificação de texto Texto simples: EBCDIC, ASCII, ISO8859, Unicode, UTF8 Texto formatado: RTF, DOC, Postscript, PDF, LaTeX, SGML Introdução aos Sistemas e Redes de Computadores 7
EBCDIC EBCDIC (acrónimo de Extended Binary Coded Decimal Interchange Code) Um código de 8 bits utilizado nos mainframe da IBM (z/os, OS/390, VM ) As regras de codificação dos caracteres em sequências de 0 s e 1 s foram inspiradas nas perfuradoras de cartões Ainda hoje é usado nos mainframe IBM Introdução aos Sistemas e Redes de Computadores 8
ASCII: Introdução [1] ASCII (acrónimo de American Standard Code for Information Interchange) Define um conjunto de regras consistentes em que sequências de 0 s e 1 s são usadas para representar caracteres Permite uniformidade na transferência de caracteres entre máquinas diferentes Introdução aos Sistemas e Redes de Computadores 9
ASCII: Introdução [2] Teve origem no tempo em que os computadores apenas conseguiam manipular códigos de 7 bits Posteriormente os computadores evoluíram para máquinas de 8 bits, pelo que um zero inicial foi adicionado à esquerda do código, para manter a compatibilidade Desta forma foi possível estender a codificação original com mais caracteres, fazendo uso do (novo) 8º bit (ISO 8859-*) Introdução aos Sistemas e Redes de Computadores 10
ASCII: Introdução [3] Os programadores podem necessitar de aceder à codificação decimal ou hexadecimal dos caracteres, pelo que é frequente encontrar-se tabelas de códigos ASCII Nos sistemas baseados no Unix (e.g., Linux) pode-se utilizar o comando man ascii para obter mais informações sobre esta codificação Introdução aos Sistemas e Redes de Computadores 11
ASCII: Tabela de códigos ASCII [3] Caracteres de controlo, como o <LF>, iniciam-se no código 01 h e vão até ao código 1F h Os códigos das letras maiúsculas e das minúsculas está separado de 20 h posições, o que significa que é fácil fazer transformações de caracteres maiúsculos em minúsculos e vice-versa através de uma simples adição/subtracção de 20 h ao respectivo código Introdução aos Sistemas e Redes de Computadores 12
ASCII estendido ISO 8859 (International Standards Organization #8859) Um esquema de codificação que disponibiliza caracteres aos definidos no código ASCII base (7 bits) ao fazer uso do 8º bit Existem vários conjuntos de códigos (subnormas), tais como ISO-8859-1 (ISO-8859-15): codifica muitos dos símbolos usados nas línguas da Europa Ocidental e do Norte ( -15 inclui o ) ISO-8859-2: codifica muitos dos símbolos usados nas línguas da Europa de Leste ISO-8859-10: codifica muitos dos símbolos usados nas línguas Nórdicas e Esquimós Introdução aos Sistemas e Redes de Computadores 13
Representando caracteres [4] A mesma sequência de dígitos binários pode representar diferentes caracteres na norma ISO-8859, pois depende da sub-norma que se está a usar! Por exemplo, se enviar a palavra acção (codificada em ISO-8859-1) para um nórdico (que usa ISO-8859-10), no lugar do ç e do ã ele verá caracteres próprios da sua língua Introdução aos Sistemas e Redes de Computadores 14
Representando caracteres [5] Como evitar a necessidade de trocar a norma ISO-8859-x que estamos a usar? Como representar os caracteres de outras línguas (e.g., asiáticas), que contém centenas ou milhares de símbolos? Uma codificação de 8 bits não chega Será que uma codificação de 16 bits (> 65.000 caracteres) chega? Será que pode ser universal? E a compatibilidade com ASCII? Introdução aos Sistemas e Redes de Computadores 15
Unicode [1] Unicode (Universal Character Set) É um conjunto de normas, das quais as mais populares são UCS-2 e UCS-4 Representação baseada numa codificação a 16 (ou 32) bits, que permite representar +65.000 (+4x10 9 ) caracteres UCS-2 permite representar uma grande percentagem dos caracteres usados em todas as línguas vivas do mundo UCS-4 permite representar todos os caracteres Desde o Windows98 que os nomes dos ficheiros são guardados em UCS-2! Introdução aos Sistemas e Redes de Computadores 16
Unicode [2] Unicode código multilingue de 16-bits, lançado nos EUA pelo Unicode Consortium (www.unicode.org) em 1980 UCS (ISO 10646) - Universal Coded Character Set (UCS) Introduzido inicialmente em 1993 UCS-4 (32-bit), UCS-2 (16-bit) Norma Representação de A ASCII 1000001 (41 h ) 8859-1 (Latin 1) 01000001 (41 h ) Unicode, UCS-2 00000000 01000001 (0041 h ) UCS-4 00000000 00000000 00000000 01000001 Introdução aos Sistemas e Redes de Computadores 17
UTF-8 [1] As normas UCS-2/4, por ser uma codificação em 16/32 bits, não são compatíveis com a norma ASCII Isto levanta sérios problemas à adopção generalizada do UCS Obrigaria à conversão do software existente que fosse baseado na codificação ASCII (quase todo ) A codificação UTF-8 tenta juntar o melhor das duas codificações Mantém a compatibilidade com o ASCII Permite escrever caracteres em Unicode Introdução aos Sistemas e Redes de Computadores 18
UTF-8 [2] UTF-8 e UTF-16 UCS/Unicode Transformation Format Método para codificar uma string de caracteres em UCS/Unicode como uma sequência de bytes UCS-4 (hex) UTF-8 (binary) U-00000000 - U-0000007F: 0xxxxxxx U-00000080 - U-000007FF: 110xxxxx 10xxxxxx U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx Introdução aos Sistemas e Redes de Computadores 19
Ficheiro de texto ASCII (.txt) Um ficheiro de texto ASCII/ANSI/Unicode é um ficheiro onde os caracteres estão representados pelos seus códigos ASCII/ANSI/Unicode respectivamente Os códigos ASCII entre 00-31 (00 h 1F h ) e 127 (7F h ) são caracteres de controlo Hello World Document Architecture ANSI Example01.txt 09 h Character Tab (HT) 0Ah Line Feed (LF) 0Dh Carriage Return (CR) 20h Space 48h H 65h e Introdução aos Sistemas e Redes de Computadores 20
Ficheiro de texto UCS-2 (.txt) Hello World Document Architecture Unicode Example02.txt Little-Endian (e.g., Intel Architecture) Hello World Document Architecture Unicode Big-Endian Example03.txt Big-Endian, Sun s SPARC, Motorola s 68K, Java VM Introdução aos Sistemas e Redes de Computadores 21
Ficheiro de texto UTF-8 (.txt) Hello World Document Architecture UTF-8 Example04.txt UTF-8 signature A codificação UTF-16 aplica os princípios da codificação UTF-8, mas com um código base de 16 bits em vez de 8 bits Porque é incompatível com o ASCII, não é muito popular no entanto é usada na codificação dos nomes dos ficheiros em Windows, por exemplo! Introdução aos Sistemas e Redes de Computadores 22
Rich Text Format (.rtf) [1] Microsoft, RTF 1.6, 1999 Um ficheiro RTF contém apenas caracteres ASCII de 7 bits Contém apenas texto não formatado, paralvras de controlo, símbolos de controlo e grupos Uma palavra de controlo é um comando RTF com uma forma especial, que será posteriormente convertida em códigos de controlo da impressora, ou em informação usada pelas aplicações que gerem os documentos Uma palavra de controlo tem a seguinte forma \LetterSequence<Delimiter> onde LetterSequence é constituída apenas por caracteres alfabéticos minúsculos Introdução aos Sistemas e Redes de Computadores 23
Rich Text Format (.rtf) [2] Exemplo 1. Hello World/Document Architecture \*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (} {\pntxta )}}\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto \adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe1033\cgrid \langnp2057\langfenp1033 {Hello World \par Document Architecture \par }} Exemplo 2. Никола (uma palavra em Cirílico) \pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\* \pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}} {\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (} {\pntxta )}}\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\lang1049\langfe1033\langnp1049 \'cd\'e8\'ea\'ee\'eb\'e0\par }} Introdução aos Sistemas e Redes de Computadores 24
MS Word e PowerPoint (.doc,.ppt) Exemplo 1. Hello World/Document Architecture num ficheiro.doc Ъ Ак РїУВ ј 0 м Ъ Ъ + 0 [ Ъ Ъ 0 ј ј Ё Ё Ё Ё Щ Hello World Document Architecture.doc,.ppt são formatos binários Introdução aos Sistemas e Redes de Computadores 25
Postscript (.ps) [1] Postscript é uma linguagem de programação (ou de descrição de página) optimizada para a impressão de gráficos e texto Introduzida pela Adobe em 1985 A linguagem Alternative Printer Control Language (PCL) foi introduzida pela HP O grande objectivo da linguagem Postscript foi o de disponibilizar uma forma conveniente de descrever texto e imagens de uma forma independente do dispositivo (e da sua resolução) Necessita de um dispositivo (impressora) com um interpretador de Postscript Introdução aos Sistemas e Redes de Computadores 26
Postscript (.ps) [2] Exemplo de um programa em Postscript Introdução aos Sistemas e Redes de Computadores 27
Portable Document Format (.pdf) Formato binário para representação de documentos da Adobe s, baseado na linguagem Postscript Utilização crescente como norma de facto para representar ficheiros a imprimir (e não só) O formato PDF foi concebido de forma a preservar todas as fontes, formatação, gráficos e cores de qualquer documento, independentemente da aplicação e plataforma onde foi criado Introdução aos Sistemas e Redes de Computadores 28
Documentos Estruturados vs. Não-Estruturados Documentos com elevada estruturação são, por exemplo, os especificados em SGML, HTML e LaTeX A especificação da estrutura do documento facilita muito o processamento automático No entanto, a informação da estrutura não é dados (texto), aumentado o tamanho final do ficheiro Introdução aos Sistemas e Redes de Computadores 29
Capítulo 2 Outra informação não numérica Adaptado dos transparentes das autoras do livro The Essentials of Computer Organization and Architecture
Objectivos Compreender como se pode representar informação não numérica no computador Saber diferenciar codificações lossy de codificações lossless Conhecer diferentes normas para codificar diferentes tipos de informação não numérica Introdução aos Sistemas e Redes de Computadores 31
Como se representa Som? mp3, ogg, flac, ape, wav, Imagem? JPG, GIF, PNG, TIFF, Vídeo? mpeg-1, mpeg-2, mpeg-4, XVid, Introdução aos Sistemas e Redes de Computadores 32
O que é a compressão? E porquê? Algoritmo de compressão x bytes Rácio de compressão: R = F(o) / F (c) F(o) = tamanho do ficheiro original F(c) = tamanho do ficheiro comprimido e.g., F(o) = 10 MB, F(c) = 5 MB, R= 10 / 5 = 2:1 Porquê comprimir ficheiros? Arquivo e transmissão y bytes y < x Introdução aos Sistemas e Redes de Computadores 33
1. Compressão de dados Transformação dos dados que permite obter um conjunto de dados equivalente ao inicial mas que ocupa menos espaço Lossless Pode-se aplicar uma função (inversa) aos dados comprimidos e voltar a obter os dados na forma original Lossy Ao aplicar a função inversa aos dados comprimidos, obtém-se um conjunto de dados parecido com o original, mas não igual Introdução aos Sistemas e Redes de Computadores 34
Terminologia importante Compressão lossless Compressão lossy Compressão linear ficheiros em geral (1D) Compressão espacial imagem estática (2D) Compressão temporal vídeo (3D) Codec função específica de transformação Introdução aos Sistemas e Redes de Computadores 35
Codificação run length Sistema de codificação de dados Substitui uma sequência de símbolos pelo para (símbolo, contador) Ex: aaaaazz é codificado como (a,5) (z,2) Bom para sequências horizontais Mecanismo de compressão linear (1D) Usada nos GIF (LZW) e nos PNG (LZ77) Introdução aos Sistemas e Redes de Computadores 36
Codificação de Huffman [1] Usa um número variável de bits para codificar o alfabeto (conjunto de símbolos original) Usa um dicionário para converter o alfabeto no código e vice-versa Introdução aos Sistemas e Redes de Computadores 37
LZ77 - PKZIP Substitui uma sequência frequente com um símbolo apenas Usa uma janela de prospecção para procurar para a frente Janela de texto Símbolos Dicionário cat 01 Código anbfcatkdfjs lcatjfl Janela de prospecção Necessita de guardar e transmitir o dicionário O algoritmo LZW não necessita de dicionário gerado na Tx / Rx Introdução aos Sistemas e Redes de Computadores 38
2. Representação de imagem Associa a cada ponto um coeficiente num espaço de cor Há vários espaços de cor: RGB, HSL, Exemplos: R=24 G=134 B=216 H=146 0 R,G,B 255 S=204 L=120 0 H,S,L 255 [153,204,255], [255,153,0], [255,0,255] [255,153,0], [255,153,0], [153,204,255] [255,153,0], [153,204,255], [153,204,255] 10011001, 11001100, 11111111, 11111111, 10011001, 00000000, 11111111, 00000000, 11111111, 11111111, 10011001, 00000000, 11111111, 10011001, 00000000, 10011001, 11001100, 11111111, Introdução aos Sistemas e Redes de Computadores 39
Compressão de imagem [1] Pode libertar-se da sequência associada a uma cadeia de dados Não é necessário comprimir da esquerda para a direita e de cima para baixo! Pode definir-se zonas regulares (rectângulos/quadrados) e comprimir cada zona separadamente Introdução aos Sistemas e Redes de Computadores 40
Compressão de imagem [2] Para comprimir uma zona pode-se: Fazer a média das cores dos pontos da zona Guardar a média e depois apenas as diferenças Se a zona tiver cores próximas, as diferenças são números muito pequenos (necessitaremos de poucos bits para os representar) Introdução aos Sistemas e Redes de Computadores 41
Compressão de imagem [3] R G B Média(R) = 51 Média(G) = 208 Média(B) = 252 [153, 204, 255], [ 0, 255, 255], [ 0, 120, 240] [ 0, 255, 255], [ 0, 255, 255], [153, 204, 255] [ 0, 255, 255], [153, 204, 255], [ 0, 120, 240] {51, 208, 252} [102, 4, 3], [ -51, 47, 3], [ -51, -88, 32] [ -51, 47, 3], [ 51, 47, 3], [102, 4, 3] [ -51, 47, 3], [102, 4, 3], [ -51, -88, 32] 24, 24, 24 24, 24, 24 24, 24, 24 = 216 bits 8, 8, 8 13, 19, 24 19, 19, 15 19, 15, 24 = 176 bits!!! A matriz é muito pequena e há diferenças muito grandes de cor entre os pontos! Se juntássemos uma compressão linear ficava menor ainda Introdução aos Sistemas e Redes de Computadores 42
3. Representação de som O som pode ser descrito, por exemplo, por uma onda que varia a amplitude Onda próxima da real, mas mesmo assim diferente! É preciso aumentar a frequência da amostra! Quanto maior a frequência de amostra, mais a onda se aproxima da original! Ex: mp3 (96 kbps) realiza N amostras por segundo mp3 (192 kbps) realiza 2*N amostras por segundo (não é exactamente assim!) mp3 a 192kbps aproxima-se mais do original, logo é melhor (mais fiel ) Introdução aos Sistemas e Redes de Computadores 43