Buscar

2 - Sistemas de Numeração

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 91 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas de Numeração
Decimal, Binário de Hexadecimal
Representação da Informação
© fredguedespereira@gmail.com
Parte 1
Sistemas de Numeração
Decimal, Binário e Hexadecimal
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?
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
– Utiliza os símbolos 0 a 9 e as letras A a F (16 símbolos)
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
Sistemas de Numeração
• Fórmula geral de qualquer sistema posicional:
N = ± (Sk-1...S2 S1 S0.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=Sk-1 x b
k-1 + ... + S0 x b
0 + S-1 x b
-1 +...+ S-l x b
-l
Sistemas Decimal
• S = {0,1,2,3,4,5,6,7,8,9} e b = 10
• Exemplo: o número 21310 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!
xxx
Sistemas Decimal
• Exemplo 2: o número 21,3510 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
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
• 8 bits agrupados chama-se Byte (Binary Term)
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).
"A História do Número 1"
Sistema Binário
• S = {0,1} e b = 2
• Exemplo: o número 10012 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
xxxx
Sistema Binário
• Exemplo 2 : o número 101,112 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
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 
impressionante"
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
– Em C: 0xFF número 255
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
É mais simples exibir "E4" do que "11100100", não acha?
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 1BF16 pode ser escrito
1BF16 = 1 x 16
2 + B x 161 + F x 160
162 161 160
1 B F
100
B0
F
xxx
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
0x12 em C vale 18 em decimal 
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
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: 10012 para decimal
22 21 20
0 0 1
23
1
xxxx
8 0 0 1+ + + 9=
10012 = 910
Conversões de Base
• Exemplos: 1BF316 para decimal
4096 2816 240 3+ + + 7155=
1BF316 = 715510
162 161 160
B F 3
xxx
163
1
x
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
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)
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)
FQQ0 QQ
Dk-1 ... D3 D2 D1 D0
RRRR
...
R
D =
Divide por b
Conversões de Base
• Exemplo:
– Converter 3510 para binário
351784210
10001 1
3510 = 1000112
fonte
destino
quociente
Conversões de Base
• Forma mais prática DEC  BIN
Conversões de Base
• Exemplo:
– Converter 12610 para hexadecimal
12670
7 E
12610 = 7E16
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
72110 = 2D116
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
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).
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 0f f
D-1 D-2 D-3 ... D-l
i ii
...
i
D = .
Multiplica por b
Conversões de Base
• Converter 0,87510 para binário:
0,875 0,75 0,5
11
0,87510 = 0,1112
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
Conversões de Base
• Converter 0,87410, 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,87410 ≈ 0,110111111012
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.
Conversões de Base
• Converter 178,610 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,610 ≈ B2,99916
Conversões de Base
• Conversão binário-hexadecimal
– Cada 4 bits BIN equivalem a um dígito HEX e vv.
0 1 1 01 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
Conversões de Base
• Converta para a base solicitada
 25516 BIN
 FACA16 BIN
 BEEF16 BIN
 1101102 HEX
 0011110102  HEX
 1102 HEX
 1111000100102  HEX
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 = logb N
x = Menor número inteiro que é maior ou igual a x
Conversões de Base
• Qual o maior número representável com k
dígitos na base b?
Nmax = b
k – 1
• Exemplos:
– Maior número com 3 dígitos na base 10: 
Nmax = 10
3 – 1 = 1000 – 1 = 999
– Maior número com 4 dígitos na base 2:
Nmax = 2
4 – 1 = 16 – 1 = 15 ( = 11112)
Parte 2
Representação da Informação
Números e Texto
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?
– Como representar a parte fracionária dos reais?
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
0 0 0 0 1 1 0 0
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çãoSubtração
Números Inteiros
• Inteiros com sinal-magnitude
– Um bit é usado para representar o sinal, sendo 1 = 
negativo e 0 = positivo (o mais significativo)
– Nmax = (2
k – 1) / 2; Nmin = – 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 magnitude0sinal
Números Inteiros
• Tenho 8 bits, qual o maior e menor valor que 
posso representar com sinal-magnitude?
 Nmax = (2
8 – 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
com 7 bits
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
01111000
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
somasubtração
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
01111000
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
somasubtração
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 = (2
k – 1) / 2; Nmin = – (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
Números Inteiros
• Complemento-de-dois:
0 0 1 0Número original = 
1 0
Transfere os bits, da direita para a 
esquerda, até achar o primeiro 1
1 1 1 0Complemento-de-2 = 
+210= 
Transfere os bits restantes invertidos
-210= 
Números Inteiros
• Complemento-de-dois com 1 byte:
0 0 0 0 0 0 1 0Número original = 
1 0
1 1 1 1 1 1 1 0Complemento-de-2 = 
+210= 
-210= 
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
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
01111000
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
somasubtração
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
01111000
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
somasubtração
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
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
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
Número ponto fixo = 8,563
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
Número ponto fixo = 8,52
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 pontofixo 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
Número ponto fixo = 1,00111
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
Não precisa guardar esse bit, pois ele é sempre 1
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!
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
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)
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
5) Concatene S, E e M, nesta ordem
Números Reais
• Represente o número 17,37510 em Excesso_127
1) O sinal S é 0 (positivo)
2) 17,375 em binário vale 10001,0112
3) 10001,0112 = 1,00010112 x 2
4
4) E = 4 + 127 = 131 = 100000112 (com 8 bits!)
M = 0001011 (mais 16 zeros à direita)
5) Concatenando, obtemos o número de 32 bits:
01000001100010110000000000000000
S E M
Números Reais
• Represente o número -0,023437510 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:
10111100110000000000000000000000
S E M
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,1111112
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
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
11001010000000000111000100001111
Números Reais
2) S = 1, o número é negativo
3) E = 100101002 = 14810 – 127 = 21
4) M = 000000001110001000011112 
M = 1,000000001110001000011112 x 2
21
M desnorm. = 10000000011100010000,112
5) 10000000011100010000,112 = 2.104.378,7510
6) N = –2.104.378,7510
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
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
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.
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
– Há uma versão estendida com 8 bits
Representação de Texto
C
ó
d
ig
o
 A
SC
II
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
• O código da letra A é 100001 (binário) ou 65 (decimal)
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]
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
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)
Representação de Texto
• Code Page 437 (IBM-PC)
Representação de Texto
• Code Page 850 (usados no Brasil)
Representação de Texto
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...
Representação de Texto
ISO-8859-1
Representação de Texto
Windows-1252
Caracteres de
controle ou não 
usados
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)
Tengwar Klingon
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/
Representaçãode 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 
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
21 U+1FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
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:
48 65 6C 6C 6F
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 11000010 10100010 C2 A2
€ U+20AC 00100000 10101100 11100010 10000010 10101100 E2 82 AC
𤭢 U+24B62 00010 01001011 01100010
11110000 10100100 10101101
10100010
F0 A4 AD A2
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
http://en.wikipedia.org/wiki/Code_page_437
Referências Bibliográficas
• UTF-8 em Wikipedia
http://en.wikipedia.org/wiki/UTF-8
• Unicode em Wikipedia
http://en.wikipedia.org/wiki/Unicode
Referências Bibliográficas
• Recomendo o seguinte livro texto:

Continue navegando