• Nenhum resultado encontrado

Sistemas de Numeração

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas de Numeração"

Copied!
91
0
0

Texto

(1)

Sistemas de Numeração

Decimal, Binário de Hexadecimal

Representação da Informação

(2)

Parte 1

Sistemas de Numeração

(3)

Sistemas de Numeração

• Como o computador, usando apenas 0s e 1s,

manipula números, letras, símbolos, imagens,

sons, vídeos, etc?

• Em outras palavras: como a informação é

representada no computador?

• A seqüência 10100001 é:

– O número 161 em decimal? – O código da letra "A"?

– A cor de um pixel de uma imagem? – Parte de um som de uma música?

(4)

Sistemas de Numeração

• Sistema de Numeração

– Define como os números podem ser representados utilizando distintos símbolos

• Sistema Decimal

– Utiliza os símbolos 0 a 9 (10 símbolos)

• Sistema Binário

– Utiliza os símbolos 0 e 1 (2 símbolos)

• Sistema Hexadecimal

(5)

Sistemas de Numeração

• Números no sistema decimal

– 110, 510, 3210, -10810, 44710

• Números no sistema binário

– 12, 1012, 1000002, 100101002, 1101111112

• Números no sistema hexadecimal

– 116, 516, 2016, -6C16, 1BF16

• Todos estes sistemas são posicionais

– O símbolo vale de acordo com a posição que ocupa no número

(6)

Sistemas de Numeração

• Fórmula geral de qualquer sistema posicional:

N = ± (S

k-1

...S

2

S

1

S

0

.S

-1

S

-2

... S

-l

)

b

• Onde:

– S é o conjunto de símbolos – Si é o símbolo na posição i – b é a base do sistema

N=

S

k-1

x b

k-1

+ ... + S

0

x b

0

+ S

-1

x b

-1

+...+ S

-l

x b

-l

(7)

Sistemas Decimal

• S = {0,1,2,3,4,5,6,7,8,9} e b = 10

• Exemplo: o número 213

10

pode ser escrito

213 = 2 x 102 + 1 x 101 + 3 x 100 102 101 100 2 1 3 200 10 3

A potência indica o número de casas deslocadas para a esquerda pelo símbolo!

x x

(8)

Sistemas Decimal

• Exemplo 2: o número 21,35

10

pode ser escrito

21,35 = 2 x 101 + 1 x 100 + 3 x 10-1 + 5 x 10-2 101 100 10-1 2 1 3 200 10 0,3 , 10-2 5 0,05 x x x x

(9)

Sistema Binário

• Utiliza dois dígitos apenas: 0 e 1

• Computadores eletrônicos usam voltagens

para representar estes valores (+5V e 0V)

• Um dígito binário é chamado de Bit (Binary

Digit)

– Menor unidade de informação possível

(10)

Sistema Binário

• Gottfried Leibniz documentou o sistema

binário no artigo "Explication de

l'Arithmétique Binaire" (séc. XVIII) .

• George Boole definiu uma álgebra para o

sistema binário que se tornou base para os

computadores modernos (1854).

• Claude Shannon implementou a álgebra

booleana em circuitos elétricos pela primeira

vez na história (1937).

(11)

Sistema Binário

• S = {0,1} e b = 2

• Exemplo: o número 1001

2

pode ser escrito

1001 = 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 22 21 20 0 0 1 1000 000 00 23 1 1 x x x x

(12)

Sistema Binário

• Exemplo 2 : o número 101,11

2

pode ser escrito

1001 = 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 1 x 2-2 21 20 2-1 0 1 1 100 00 1 22 1 0,1 2-2 1 0,01 , x x x x x

(13)

Sistema Binário

• Humor binário...

"Existem apenas 10 tipos de pessoas: as que entendem binário e as que não entendem" "Em binário, está no Top 10 é muito mais

(14)

Sistema Hexadecimal

• Criado para exibir números binários de forma

mais clara para humanos

• Cada dígito hexadecimal equivale a 4 dígitos

binários (chamados de nibble)

• Usados em muitos contextos atualmente:

– URLs: http://www.examplo.com/joao%20pessoa – XML: ’  código unicode do caractere ' – CSS: #FFFFFF  código da cor branca

(15)

Sistema Hexadecimal

• Relação entre nibbles e dígitos hexadecimais

Binário Hexa 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 Binário Hexa 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F

(16)

Sistema Hexadecimal

• S = {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} e b = 16

• Exemplo: o número 1BF

16

pode ser escrito

1BF

16

= 1 x

16

2

+ B x

16

1

+ F x

16

0 162 161 160 1 B F 100 B0 F x x x

(17)

Sistema Hexadecimal

• Humor hexadecimal...

– Alguns SOs inicializam bytes de memória não usada com o valor "DEADBEEF"

– Java usa o código "CAFEBABE" para identificar seus arquivos compilados

(18)

Sistemas de Numeração

Decimal Binário Hexadecimal

0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 16 10000 10

(19)

Conversões de Base

• De qualquer base para decimal

– Multiplica-se o valor do dígito pela sua potência posicional e somam-se os resultados

• Exemplos: 1001

2

para decimal

22 21 20 0 0 1 23 1 x x x x 8 + 0 + 0 + 1 = 9

1001

2

= 9

10

(20)

Conversões de Base

• Exemplos: 1BF3

16

para decimal

4096 + 2816 + 240 + 3 = 7155

1BF3

16

= 7155

10 162 161 160 B F 3 x x x 163 1 x

(21)

Conversões de Base

• Converta os seguintes números para decimal:

a) 10016 b) 1002 c) 1010102 d) CAFE16 e) 10F16 f) 1216 g) 11112

(22)

Conversões de Base

• De decimal para qualquer base (parte inteira)

1) O número a ser convertido é chamado de fonte 2) Realiza-se a divisão inteira do fonte pela base a

ser convertida

3) Insere-se o resto à esquerda do número destino 4) Se o quociente for zero, PARE

5) Senão, faça o quociente ser o novo fonte e retorne ao passo (2)

(23)

Conversões de Base

• O algoritmo anterior de forma esquemática:

– F: número fonte (decimal)

– Q: quociente da divisão por b

– D: número destino (na outra base)

F Q Q 0 Q Q Dk-1 ... D3 D2 D1 D0 R R R R ... R D = Divide por b

(24)

Conversões de Base

• Exemplo:

– Converter 3510 para binário

35 17 8 4 2 1 0 1 0 0 0 1 1

35

10

= 100011

2 fonte destino quociente

(25)

Conversões de Base

(26)

Conversões de Base

• Exemplo:

– Converter 12610 para hexadecimal

126 7

0

7 E

(27)

Conversões de Base

• Forma mais prática DEC  HEX

Divisão Q R Dec Hex 721 / 16 45 1 1 45 / 16 2 13 D 2 / 16 0 2 2

721

10

= 2D1

16

(28)

Conversões de Base

• Converta de decimal para a base pedida:

 12810  BIN  409610  BIN  25410  BIN  25510  BIN  1210  HEX  4398110  HEX  6420210  HEX  9832261010  HEX

(29)

Conversões de Base

• De decimal para qualquer base (parte fracionária)

1) O número a ser convertido é chamado de fonte. 2) Realiza-se a multiplicação do fonte pela base a ser

convertida.

3) Insere-se a parte integral do resultado à direita do número destino.

4) Se a parte fracionária for 0 ou se se atingiu uma dada quantidade de casas decimais, PARE.

5) Senão, faça a parte fracionária ser o novo fonte e retorne ao passo (2).

(30)

Conversões de Base

• O algoritmo anterior de forma esquemática:

– F: número fonte (decimal)

– f: parte fracionária da multiplicação por b – i: parte integral da multiplicação por b

– D: número destino (na outra base)

F f f f 0 D-1 D-2 D-3 ... D-l i i i ... i D = . Multiplica por b

(31)

Conversões de Base

• Converter 0,875

10

para binário:

0,875 0,75 0,5 1 1

0,875

10

= 0,111

2 1 0 x2 x2 x2 0,875 x 2 = 1,75 1 0,75 x 2 = 1,5  1 0,5 x 2 = 1,0  1 0,0  PARE

(32)

Conversões de Base

• Converter 0,874

10

, porém...

0,874 x 2 = 1,748  1 0,748 x 2 = 1,496  1 0,496 x 2 = 0,992  0 0,992 x 2 = 1,984  1 0,984 x 2 = 1,968  1 0,968 x 2 = 1,936  1 0,936 x 2 = 1,872  1 0,872 x 2 = 1,744  1 0,744 x 2 = 1,488  1 0,488 x 2 = 0,976  0 0,976 x 2 = 1,952  1 ... Quando isto acaba?

0,874

10

≈ 0,11011111101

2

0,87353515625

•A conversão pode ser muito longa ou gerar uma dízima periódica em binário. •Deve-se parar quando o número atingir uma quantidade satisfatória de dígitos.

(33)

Conversões de Base

• Converter 178,6

10

para hexadecimal (3 casas):

– Parte integral (÷16) – Parte fracionária (x 16) 178 / 16 = 11 e resto 2 11 / 16 = 0 e resto B 0,6 x 16 = 9,6  9 0,6 x 16 = 9,6  9 0,6 x 16 = 9,6  9

178,6

10

≈ B2,999

16

(34)

Conversões de Base

• Conversão binário-hexadecimal

– Cada 4 bits BIN equivalem a um dígito HEX e vv.

0 1 1 0

1 1 1 0

E 5

Binário Hexa 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 Binário Hexa 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F binário hexadecimal

(35)

Conversões de Base

• Converta para a base solicitada

 25516  BIN  FACA16  BIN  BEEF16  BIN  1101102  HEX  0011110102  HEX  1102  HEX  1111000100102  HEX

(36)

Conversões de Base

• Quantos dígitos são necessários para

representar um número numa determinada

base?

• Exemplos:

– k10 = log10 234 = 2,37 = 3  23410 – k16 = log16 234 = 1,96 = 2  EA16 – k2 = log2 234 = 7,8 = 8  111010102

k = log

b

N

(37)

Conversões de Base

• Qual o maior número representável com k

dígitos na base b?

N

max

= b

k

– 1

• Exemplos:

– Maior número com 3 dígitos na base 10: Nmax = 103 – 1 = 1000 – 1 = 999

– Maior número com 4 dígitos na base 2: Nmax = 24 – 1 = 16 – 1 = 15 ( = 1111

(38)

Parte 2

Representação da Informação Números e Texto

(39)

Representação de Números

• Uma vez num computador, tudo vira binário...

• Como números inteiros e reais são

representados (i.e., armazenados)?

– Como representar números positivos? – Como representar números negativos?

(40)

Números Inteiros

• Representação de inteiros

– Inteiros sem sinal

– Inteiros com sinal-magnitude – Inteiros em Complemento-de-2

• Inteiros sem sinal

– Valores vão de 0 a 2k – 1, onde k= num. de dígitos

– Exemplo: 12 representado em 1 byte

(41)

Números Inteiros

• Overflow  Uma variável inteira possui o valor 12 (1100)

 É somado 5 a este valor (desloca sentido horário)  O resultado é 1 (0001)

 Uma variável inteira possui o valor 4 (0100)

 É subtraído 7 deste valor (desloca sentido

anti-horário)

 O resultado é 13 (1101)

Adição Subtração

(42)

Números Inteiros

• Inteiros com sinal-magnitude

– Um bit é usado para representar o sinal, sendo 1 = negativo e 0 = positivo (o mais significativo)

– Nmax = (2k – 1) / 2; N

min = – Nmax

– Existem duas representações para o número zero – Exemplo com 4 bits:

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

0 1 2 3 4 5 6 7 -0 -1 -2 -3 -4 -5 -6 -7

111

magnitude

0

(43)

Números Inteiros

• Tenho 8 bits, qual o maior e menor valor que

posso representar com sinal-magnitude?

 Nmax = (28 – 1) / 2 = (256 – 1) / 2 = +127

 Nmin = -Nmax = -127

• Represente os inteiros a seguir em 8-bit s-m:

 110  1101110  011011102

 -45  0101101  101011012

 -3  0000011  100000112

(44)

Números Inteiros

Overflow negativo

• Ocorre quando se tenta armazenar um número que é menor que o Nmin • Subtrair 7 de -5 produz um valor incorreto: 6 • Subtrair 4 de 2 produz um valor incorreto: -6 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1111 1110 +0 1 2 3 4 5 6 7 -0 -1 -2 -4 -3 -5 -6 -7 Subtrai 7 soma subtração

(45)

Números Inteiros

Overflow positivo

• Ocorre quando se tenta armazenar um número que é maior que o Nmax • Somar 6 a +5 produz um valor incorreto: -3 • Somar 6 a -5 produz um valor incorreto: 3 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1111 1110 +0 1 2 3 4 5 6 7 -0 -1 -2 -4 -3 -5 -6 -7 Somar 6 soma subtração

(46)

Números Inteiros

• Inteiros em complemento-de-dois

– Utilizado pela maioria dos computadores

– Permite que a subtração seja realizada com soma – Possuem apenas uma representação do zero

– Exemplo: escala para números de 4 bits

Nmax = (2k – 1) / 2; N

min = – (Nmax + 1)

1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

(47)

Números Inteiros

• Complemento-de-dois:

0 0 1 0

Número original =

1 0

Transfere os bits, da direita para a esquerda, até achar o primeiro 1

1 1 1 0

Complemento-de-2 =

+2

10

=

Transfere os bits restantes invertidos

-2

10

(48)

Números Inteiros

• Complemento-de-dois com 1 byte:

0 0 0 0 0 0 1 0

Número original =

1 0

1 1 1 1 1 1 1 0

Complemento-de-2 =

+2

10 =

-2

10 =

(49)

Números Inteiros

• Represente, em binário, o

complemento-de-dois (em 8 bits) para os seguintes números

decimais:

 28  -39  14  -7  -246

(50)

Números Inteiros

Overflow negativo

• Ocorre quando se tenta armazenar um número que é menor que o Nmin • Subtrair 7 de -3 produz

um valor incorreto: 6 • Mas... subtrair 4 de 2

produz um valor correto: -2 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1111 1110 +0 1 2 3 4 5 6 7 -8 -7 -6 -4 -5 -3 -2 -1 Subtrai 7 soma subtração

(51)

Números Inteiros

Overflow positivo

• Ocorre quando se tenta armazenar um número que é maior que o Nmax • Somar 6 a +5 produz um

valor incorreto: -5 • Mas...somar 5 a -3

produz um valor correto: 2 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1111 1110 +0 1 2 3 4 5 6 7 -8 -7 -6 -4 -5 -3 -2 -1 Somar 6 soma subtração

(52)

Números Inteiros - Comparativo

Padrão binário Sem sinal Sinal-Mag. Compl.-2

0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 1000 8 -0 -8 1001 9 -1 -7 1010 10 -2 -6 1011 11 -3 -5 1100 12 -4 -4 1101 13 -5 -3 1110 14 -6 -2 1111 15 -7 -1

(53)

Números Reais

• Possuem uma parte inteira e outra fracionária

• Uma forma mais limitada de representação é

chamada de ponto fixo

– Fixa-se a quantidade de casas para a parte inteira e fracionária.

– Exemplo 5 casas inteiras e 2 fracionárias: 1,00345 torna-se 1,00 e 239.874,12 torna-se 39.874,12

• Um forma mais precisa é a do

ponto flutuante

– Também chamada de notação científica – Em inglês: floating point

(54)

Números Reais

• Formato da notação de ponto flutuante (científica):

– Sinal: sinal do número (um bit basta)

– Deslocador: uma potência de 10 que indica para onde a vírgula decimal (ponto, em inglês) deve se deslocar

– Número ponto fixo: o número convertido para uma notação de ponto fixo

• Exemplo 1:

 +8.563.000.000.000,00  Torna-se: +8,563 x 1012

Sinal Deslocador Número ponto fixo

Sinal = +

Deslocador = 12

(55)

Números Reais

• Exemplo 2:

 -0,000000852

 Torna-se: -8,52 x 10-7

• Converta para a notação científica:

 125.369,458  -589,00008  0,000159

Sinal =

-Deslocador = -7

(56)

Números Reais

• A técnica pode ser empregada em números

binários:

 1001110000000000,00  Torna-se: 1,00111 x 215

• A parte em ponto fixo do número deve ser

normalizada:

– d,xxxxxxx em decimal, onde d e x = {1,...9} – 1,bbbbbb em binário, onde b é 1 ou 0

Sinal = +

Deslocador = 15

(57)

Números Reais

• Ponto flutuante em binário:

– Sinal: um bit guarda o sinal + ou –

– Expoente: potência que indica o deslocamento

– Mantissa: parte fracionária do número binário em ponto fixo normalizado

• Exemplo:

 1,00111 x 215

Sinal Expoente Mantissa

Sinal = +

Expoente = 15 Mantissa= 00111

(58)

Números Reais

• Vamos às representações binárias de cada

parte:

– Sinal: um bit, sendo 0=positivo, 1=negativo

– Mantissa: é um número inteiro sem sinal (zeros à esquerda, porém, importam!)

– Expoente: é um número com sinal, armazenado num formato chamado de sistema Excesso

• Note que o expoente não é armazenado em complemento-de-2, mas neste novo sistema!

(59)

Números Reais

• O Sistema Excesso_k:

-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

+7

-7 = 0000 -6 = 0001 -5 = 0010 -4 = 0011 ... 0 = 0111 1 = 1000 ... 14 = 1110 15 = 1111 (bias) Cálculo do bias:

2

m-1

-1

onde m = número de bits

(60)

Números Reais

• Padrão IEEE-754/1985 para números reais:

– Excesso_127: real de precisão simples – Excesso_1023: real de precisão dupla

S Expoente Mantissa 1 8 23 S Expoente Mantissa 1 11 52 Excesso_127 (32 bits) Excesso_1023 (64 bits)

(61)

Números Reais

• Algoritmo para representar números reais:

1) Armazene o sinal em S (0 ou 1)

2) Transforme o número em binário (já sem o sinal) 3) Normalize

4) Encontre os valores de E e M a) E = valor do expoente + bias

b) M = parte fracionária do número normalizado

(62)

Números Reais

• Represente o número 17,375

10

em Excesso_127

1) O sinal S é 0 (positivo)

2) 17,375 em binário vale 10001,0112 3) 10001,0112 = 1,00010112 x 24

4) E = 4 + 127 = 131 = 100000112 (com 8 bits!)

M = 0001011 (mais 16 zeros à direita)

5) Concatenando, obtemos o número de 32 bits:

0

1000001100010110000000000000000

(63)

Números Reais

• Represente o número -0,0234375

10

em

Excesso_127

1) O sinal S é 1 (negativo) 2) 0,023437510 = 0,00000112 3) 0,0000011 = 1,12 x 2-6 4) E = -6 + 127 = 12110 = 011110012 M = 1  10000000000000000000002 5) Concatenando tudo:

1

0111100110000000000000000000000

S E M

(64)

Números Reais

• Converta os número reais a seguir para a

notação de 32 bits da IEEE-754:

a) 7,1875 b) -12,640625 c) 11,40625 d) -0,375 e) +2-4 x 1,011100112 f) -23 x 1,111111 2

(65)

Números Reais

• Algoritmo para recuperar reais:

1) Encontre S, E e M no padrão binário

2) Se S=0, número positivo, senão, negativo 3) Encontre o deslocador = E – 127

4) Desnormalize a mantissa M

5) Converta para decimal 6) Adicione o sinal S

(66)

Números Reais

• O padrão a seguir está em Excesso_127.

Encontre o número real em decimal

11001010000000000111000100001111

1) Encontre S, E e M:  S = 1  E = 10010100  M = 00000000111000100001111

1

10010100

00000000111000100001111

(67)

Números Reais

2) S = 1, o número é negativo 3) E = 100101002 = 14810 – 127 = 21 4) M = 000000001110001000011112  M = 1,000000001110001000011112 x 221 M desnorm. = 10000000011100010000,112 5) 10000000011100010000,112 = 2.104.378,7510 6) N = –2.104.378,7510

(68)

Números Reais

• Dados os padrões abaixo no formato IEEE-754,

encontre o número real equivalente:

a) 01000010111101101110100101111001 b) 11000001001000000000010000011001 c) 10111001000000001111100110010000 d) 01000110101101110100000000110011

(69)

Números Reais

• Na linguagem C:

#include<stdio.h> int main() { float x; double y; x = 13.75; y = 7.00220030; }

Padrão IEEE 754 para reais de precisão simples e dupla

(70)

Representação de Texto

• Normalmente utiliza-se um código para:

– Identificar letras

– Identificar caracteres de pontuação

• No começo, cada computador tinha seu código

– Incompatibilidade entre eles

• Em 1963 o ANSI propôs o código ASCII (American

Standard Code for Information Interchange)

– Serve para computadores, telégrafos, etc.

(71)

Representação de Texto

• O código ASCII representa caracteres, sendo:

– Letras (maiúsculas e minúsculas)

– Dígitos de 0 a 9 (não servem para aritmética) – Caracteres especiais (# $ & etc.)

– Caracteres de pontuação (! . , ; etc.)

– Caracteres de controle (não imprimíveis)

• Utiliza 7 bits, totalizando 127 caracteres

(72)

Representação de Texto

Códig

o

ASCI

(73)

Representação de Texto

• Da tabela anterior percebemos:

– Os primeiros 32 caracteres não são imprimíveis

• Controle da impressora, modem, etc.

– Os caracteres imprimíveis vão do 32 ao 127

– O três primeiros bits do código indicam a coluna e os quatro últimos a linha do caractere na tabela:

• A = 1000001  quarta coluna, segundo caractere

• a = 1100001  quinta coluna, segundo caractere

– É mais comum usar o código em decimal

(74)

Representação de Texto

• Programa em C para gerar todos os caracteres

imprimíveis da tabela ASCII:

#include <stdio.h> #include <stdlib.h> int main() { int i; for (i = 32; i < 127; i++) { printf( "%c[%d]\n", i , i ); } return 0; } [32] ![33] "[34] #[35] $[36] %[37] &[38] '[39] ([40] )[41] *[42] +[43]

(75)

Representação de Texto

• A mensagem "Eu amo computadores" é

representada em 7-bit ASCII por:

1000101 1010101 0100000 1100001 1101101

1101111 0100000 1100011 1101111 1101101

1110000 1110101 1110100 1100001 1100100

1101111 1110010 1100101 1110011

(76)

Representação de Texto

• O ASCII foi estendido para 8 bits (totalizando

256 caracteres)

– Os primeiros 128 caracteres não mudam

– Os últimos 128 são variáveis, dependendo de quem estende a tabela

– Cada extensão recebe o nome de code page.

Israel code page 862; Grécia  code page 737; o IBM-PC code page 437; Brasil  850

• Atualmente, o ASCII é chamado US-ASCII pela

IANA (Internet Assigned Numbers Authority)

(77)

Representação de Texto

(78)

Representação de Texto

(79)
(80)

Representação de Texto

• Existem outros padrões para suporte a

caracteres latinos e de línguas ocidentais

– Padrão ISO/IEC 8859 Latin-1 para caracteres da língua portuguesa (áãàÁÃçÇ etc.)

– Padrão Windows-1252 (ou CP-1252) para caracteres latinos e de outras línguas

• Como fazer para trabalhar com o alfabeto

grego e o latino juntos? Não tem como...

• E para piorar, veio a Internet...

(81)

Representação de Texto

(82)

Representação de Texto

Windows-1252

Caracteres de controle ou não usados

(83)

Representação de Texto

• O padrão Unicode (1987)

– Criado por Joe Becker (Xerox); Lee Collins e Mark Davis (Apple)

– Usava 16 bits (65.536 caracteres)

• Unicode 2.0 em 1996 acabou com a restrição

de 16 bits

– Pode representar 1.114.112 code points (0hex a 10FFFFhex, incluindo hieróglifos egípcios e outras esquisitices)

(84)

Representação de Texto

• No Unicode, uma letra é mapeada para um

code point (um código dentro da tabela)

– Como ele será guardado em bytes é outra estória

• Um code point é representado por

U+hexcode

– U+ significa "Unicode"

– hexcode é o valor do code point em hexadecimal – Exemplo 1: U+0041 é o code point da letra A

– Exemplo 2: U+1304F é o code point de – Divirta-se: http://www.unicode.org/

(85)

Representação de Texto

• A palavra "Hello" em code points é:

U+0048 U+0065 U+006C U+006C U+006F

• Guardando cada code point em 2 bytes...

00 48 00 65 00 6C 00 6C 00 6F

ou

48 00 65 00 6C 00 6C 00 6F 00

?

• No início, Unicode foi ignorado, ele dobrava a

necessidade de espaço para texto

(86)

Representação de Texto

• Mas aí, inventaram o UTF-8

– Uma forma de guardar code points em bytes – Econômica e compatível com códigos de 8 bits

• Dependendo do code point, ele pode ser

armazenado em 1, 2 ou até 6 bytes

Bits Último CP Byte 1 Byte 2 Byte 3 Byte 4 7 U+007F 0xxxxxxx

11 U+07FF 110xxxxx 10xxxxxx

16 U+FFFF 1110xxxx 10xxxxxx 10xxxxxx

(87)

Representação de Texto

• Compatibilidade com o US-ASCII

– Os primeiros 128 caracteres são armazenados em 1 byte, com o mesmo código da tabela ASCII

• A mensagem "Hello" em UTF-8 é:

48 65 6C 6C 6F

• Em ASCII:

(88)

Representação de Texto

• Exemplos de caracteres Unicode e suas

representações em bytes (em binário e hexa)

Caractere Binário do code point Binário UTF-8 Hexadecimal

UTF-8 $ U+0024 0100100 00100100 24 ¢ U+00A2 000 10100010 1100001010100010 C2A2 € U+20AC 00100000 10101100 1110001010000010 10101100 E282 AC 𤭢 U+24B62 00010 01001011 01100010 1111000010100100 10101101 10100010 F0A4 ADA2

(89)

Referências Bibliográficas

• Fourozan, B., Mousharraf, F. Fundamentos da

Ciência da Computação. Cap.2 e Cap. 3. Cengage

Learning. 2012 (recomendo, ver último slide)

• ASCII em Wikipedia

http://en.wikipedia.org/wiki/ASCII

• Unicode and Charsets – Joel on Software

http://www.joelonsoftware.com/articles/Unicod

e.html

• Code page 437

(90)

Referências Bibliográficas

• UTF-8 em Wikipedia

http://en.wikipedia.org/wiki/UTF-8

• Unicode em Wikipedia

(91)

Referências Bibliográficas

Referências

Documentos relacionados

Na imagem abai- xo, por exemplo, as dimensões e o posicionamento dos personagens (Tio Sam e Cardoso) traduzem, em linguagem simples, o desnível geopolítico existente entre Brasil

b) com relação ao segundo questionamento: a regulamentação do adicional de férias aos Vereadores pode ser realizada pelo próprio Poder Legislativo, mediante Resolução, ou, ainda,

A Comissão de Assuntos Parlamentares, Ambiente Trabalho reuniu no dia 7 de Maio de 2004, na Sede da Assembleia Legislativa Regional, na cidade da Horta, a fim de, na sequência

Enquanto Brasil, Argentina, México, Índia e os Tigres Asiáticos, por exemplo, possuem uma respeitável base industrial, outros países mais pobres da África e da Ásia estão em

Os dados da produção habitacional do Programa Minha Casa Minha Vida (PMCMV) na Região Metropolitana de Natal (RMNatal) foram extraídos de uma Base de Dados da Caixa Econômica

expressão dual, também válida nessa álgebra, que se obtém por troca do símbolo operatório + com o símbolo operatório • e do limite universal 0 com o limite universal 1..

Código Descrição Atributo Saldo Anterior D/C Débito Crédito Saldo Final D/C. Este demonstrativo apresenta os dados consolidados da(s)

Em conclusão, constata-se que o diluente citrato-gema na concentração de 2,5% de gema de ovo em sua constituição preserva melhor a viabilidade do sêmen caprino