Professional Documents
Culture Documents
Cavalcanti
john@icomp.ufam.edu.br
Parte do material cedido pela Prof. Alexandre Passito / Fabíola Guerra / Arilo
1
Dias Neto – IComp/UFAM.
Sistemas de Numeração
Erros Numéricos
2
3
Representação não posicional
◦ romanos
MDCCCXLIX e MMCXXIV
Como seria MDCCCXLIX + MMCXXIV ?
Representação semi-posicional
◦ hebraicos
1= ( אaleph), 2= ( בbeth), 10= ( יyod),
4
Alemão
◦ Vinte e um = ein-und-zwanzig
Francês
◦ Noventa = quatre-vingt-dix deux
5
Representação posicional
◦ Base decimal (10)
10 dígitos disponíveis [0,1,2, ... ,9]
“Posição” indica potência positiva de 10
5432 = 5x103 + 4x102 + 3x101 + 2x100
6
Representação de inteiros
◦ Base binária (2)
2 “bits” disponíveis [0,1]
“Posição” indica potência positiva de 2
Exemplo: 11, 101, 1001000
1011 na base 2 =
1x23 + 0x22 + 1x21 + 1x20 = 8+0+2+1 =
11 na base decimal
7
Representação de números fracionários
8
Representação de números fracionários
9
Maior interesse em decimal (10)
◦ Nossa anatomia e cultura
e binário (2)
◦ Uso nos computadores
Outros sistemas:
◦ Octal (8), {0,1,2, ... , 7}
◦ Hexadecimal (16), {0,1,2, ... , 9, A,B,C,D,E,F}
◦ Dodecimal (relógio, calendário)
10
Decimal Binário Octal Hexadecimal
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
... ... ... ...
11
12
Uma caixa alienígena com o número 25
gravado na tampa foi entregue a um grupo
de cientistas. Ao abrirem a caixa,
encontraram 17 objetos. Considerando que o
alienígena tem um formato humanoide,
quantos dedos ele tem nas duas mãos?
13
1710 = 25 b
17 = 2xb1 + 5xb0
17 = 2b + 5
b = (17-5)/2 = 6
14
Binário para decimal
◦ Já visto!
◦ Multiplicar o bit pela potência de 2 começando em 0 (da direita
pra esquerda)
◦ Ex: 1012 = 1 x 22 + 0 x 21 + 1 x 20 = 510
15
Inteiro decimal para binário
◦ Divisão inteira (do quociente) sucessiva por 2, até que resto seja =
0 ou 1
◦ Binário = composição do último quociente (Bit Mais Significativo –
BMS) com restos (primeiro resto é bit menos significativo – bms)
D 2
b1 D1 2
b2 D2 2
b3 D3 ...
Dm-1 2
bin = 1 bn ... b3 b2 b1 bn 1
17
Procedimentos básicos: - divisão
- polinômio
- agrupamento de bits
polinômio polinômio
polinômio divisão
agrupamento agrupamento
4 bits 3 bits
BINÁRIO
18
19
a) (1011110010100111)2 = ( ? )16 b) (A79E)16 = ( ? )2
20
Conversão octal hexadecimal
21
Operação inversa: multiplicar parte
fracionária por 2 até que parte fracionária do
resultado seja 0 (zero)
Bits da parte fracionária derivados das partes
inteiras das multiplicações
Bit imediatamente à direita da vírgula = Parte
inteira da primeira multiplicação
22
Exemplo: converter 0,625 decimal para binário
23
Exemplo: converter 0,4 decimal para binário
24
Para converter um número com parte inteira e
parte, separadamente.
25
(8,375)10 = ( ? )2
26
Operações com Números Binários
◦ Exemplos: Efetuar as seguintes somas
1 1 1 1 1 1
1 1 0 0 1 0 1 1 1 1 1
+ 1 1 1 + 1
1 0 0 1 1 1 1 0 0 0 0 0
27
Operações com Números Binários
◦ Subtração de Números Binários
0-0=0
1-0=1
1-1=0
28
Operações com Números Binários
◦ Exemplo: Efetuar a seguinte subtração
* * * *
1 1 0 1 1 1 0
- 1 0 1 1 1
1 0 1 0 1 1 1
Explicando: Quando temos 0 menos 1, precisamos "pedir emprestado" do elemento
vizinho. Esse empréstimo vem valendo 2 (dois), pelo fato de ser um número binário. Então,
no caso da coluna 0 - 1 = 1, porque na verdade a operação feita foi 2 - 1 = 1. Esse
processo se repete e o elemento que cedeu o "empréstimo" e valia 1 passa a valer 0. Os
asteriscos marcam os elementos que "emprestaram" para seus vizinhos. Perceba, que,
logicamente, quando o valor for zero, ele não pode "emprestar" para ninguém, então o
"pedido" passa para o próximo elemento e esse zero recebe o valor de 1.
29
Operações com Números Binários
◦ Multiplicação de Números Binários
Similar a multiplicação de números decimais com
diferenças na hora de somar os termos resultantes da
multiplicação
30
Operações com Números Binários
◦ Exemplos: Efetuar as seguintes multiplicações
1112 x 1112 = 4910
1 1 1
x 1 1 1
1 1 1
+1 1 1 -
1 0 1 0 1
+1 1 1 - -
1 1 0 0 0 1
31
Operações com Números Binários
◦ Exemplos: Efetuar as seguintes multiplicações
10112 x 10102 = 11010
1 0 1 1
x 1 0 1 0
1
0 0 0 0
+ 1 0 1 1
0 0 0 0
1 0 1 1
1 1 0 1 1 1 0
32
Operações com Números Binários
◦ Divisão de Números Binários
Similar à divisão de números decimais. É o reverso da
multiplicação.
Deve-se observar somente a regra para subtração
entre binários.
33
Operações com Números Binários
◦ Exemplo: Efetuar a seguinte divisão
1000112 ÷ 1012 = 710
1 0 0 0’ 1’ 1’ / 1 0 1
- 1 0 1 1 1 1 710
0 1 1
0 1 1 1
- 1 0 1
0 1 0
0 1 0 1
- 1 0 1
0 0 0
34
Operações com Números Hexadecimais
◦ Soma de Números Hexadecimais
Processo semelhante ao da aritmética binária, com exceção
que, neste caso, tem-se 16 algarismos disponíveis.
Ocorrerá “vai 1” quando a soma de 2 algarismos for igual ou
ultrapassar o valor da base (16).
◦ Subtração de Números Hexadecimais
Mesma regra: o empréstimo quando ocorrer será de 16.
◦ Exemplos:
3A943B16 + 23B7D516
4C7BE816 + 1E927A16
35
Operações com Números Hexadecimais
◦ Exemplos: Efetuar a seguinte soma
1 1 1
3 A 9 4 3 B
+ 2 3 B 7 D 5
3 (16) (16)
D (16)
B
4 C 7 B E 8
- 1 E 9 2 7 A
36
Operações com Números Hexadecimais
◦ Exemplos: Efetuar a seguinte soma
1 1 1
3 A 9 4 3 B
+ 2 3 B 7 D 5
5 E 4 C 1 0
3 (16) (16)
D (16)
B
4 C 7 B E 8
- 1 E 9 2 7 A
2 D E 9 6 E
37
38
39
40
41
42
43
44
45
46
Atenção à assimetria do zero!
47
-72 -> w=8
◦ (1) converta para binário
◦ (2) Complete com 0s
◦ (3) Complemente o número convertendo 0s em 1s,
e vice-versa.
◦ (4) Adicione 1
48
-109
49
-67
50
47 e 81?
Vá até o passo (2)
51
http://www.exploringbinary.com/twos-
complement-converter/
52
53
Representação genérica:
±d0,d1d2...dtx(b)exp ,
Observação:
◦ A base não precisa ser explicitada (mas pode)
57
Na organização/arquitetura do computador,
definir:
◦ Número de bits da mantissa (precisão, p)
◦ Número de bits do expoente
◦ Um bit de sinal (“0” para + e “1” para -) para o número
(geralmente o primeiro, da esquerda)
59
Ilustração
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Sinal Expoente (+/-) Significando
Sinal do número: 0 = + e 1 = -
Expoentes: 8 combinações possíveis
◦ 000 e 111 – especiais
◦ 011 (310) = expoente zero
◦ 001 e 010 = expoente –2 e –1 (abaixo de zero)
◦ 100, 101 e 110 = expoentes 1, 2 e 3 (acima zero)
◦ OBS: Não podem seguir aritmética normal!
60
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Sinal Expoente (+/-) Significando
000 (especial)
0=+ 001 (2-2) 1,0000
1=-
1,0001
010 (2-1) ....
011 (2 0) ....
1,1111
100 (2 1)
101 (2 2)
110 (2 3) 1 = bit escondido
111 (especial)
61
Ainda os expoentes na ilustração...
◦ Maior número positivo é (lembre do bit escondido)
0 110 1111 = + 23 x 1,1111 = 1111,1 = 15,5 decimal
62
A forma de representação de ponto flutuante
depende do fabricante do computador. A
maioria segue o padrão estabelecido pelo
IEEE (Institute of Electrical and Electronics
Engineers)
68
O padrão IEEE 754 para ponto (vírgula)
flutuante é a representação mais comum para
números reais em computadores de hoje,
incluindo PC's compatíveis com Intel,
Macintosh, e a maioria das plataformas
Unix/Linux.
69
O padrão (ou norma) IEEE 754 define dois
formatos básicos para os números em ponto
flutuante:
◦ o formato ou precisão simples, com 32 bits; e,
◦ o duplo com 64 bits.
70
Sinal Expoente(+/-) Significando
Simples (32bits) 1 [bit31] 8 [bits30-23] 23 [bits22-00]
Sinal: 0 = + e 1 = -
71
Expoentes na precisão simples c/256
combinações
◦ 1111 1111
sinal=1 e significando = 0...0 : -infinito
sinal=0 e significando = 0...0 : +infinito
72
Expoentes na precisão simples c/256
combinações
◦ 0111 1111 (12710) = expoente zero (bias = polarização)
◦ 0000 0001 = menor expoente = –126 (abaixo de um)
◦ 1111 1110 = maior expoente = +127 (acima de um)
◦ 0000 0000 = zero (não normalizado)
sinal=1 e significando = 0...0 : -zero
73
Expoentes na precisão simples c/256 combinações
74
Menor número positivo (lembre do bit escondido)
◦ 0 00000000 00….01 = 2-126 x 2-23 = 2-149
75
No formato (precisão) duplo:
◦ o menor expoente é representado por
00000000001, valendo -1022,
◦ o maior expoente é representado por
11111111110, valendo +1023.
◦ Em ambos os casos, o expoente vale o número
representado em binário menos 1023 (este é o
valor da bias = zero).
76
Verifique:
Menor número positivo (lembre do bit escondido e
não normalizada)
◦ 0 00000000000 00….01 = 2-1022 x 2-52 = 2-1074
77
Expoentes na precisão dupla c/2048 combinações
78
Precisão
Propriedade
Simples Dupla
Comprimento total 32 64
bits na mantissa 23 52
bits no expoente 8 11
base 2 2
expoente máximo 127 1023
expoente mínimo -126 -1022
maior número 3,40 x1038 1,80 x10308
menor número 1,18 x10-38 2,23 x10-308
79
Atenção: calculando na mão o valor de decimal
para ponto flutuante (32 bits):
Adicione 127 ao expoente e converta para
binário.
100(10)
1100100(2) (converte o valor para binário)
0100 0010 1100 1000 0000 0000 0000 0000 (ponto flutuante)
42C80000(16)
80
Atenção: calculando na mão o valor de decimal
para ponto flutuante (32 bits):
Adicione 127 ao expoente e converta para
binário.
0,25(10)
0,01(2)
1,0 x 2-2
-2 + 127 = 125
125(10) = 0111 1101(2)
0011 1110 1000 0000 0000 0000 0000 0000 (ponto flutuante)
3E800000(16)
81
http://babbage.cs.qc.cuny.edu/IEEE-
754.old/Decimal.html
82
Converta para representação simples:
◦ 0,25
◦ 100
83
12345?
84
Número finito de bits na representação implica
em “truncamento” (ou arredondamento) do
número real a ser representado.
Truncamento introduz erro na representação.
Casos especiais:
◦ Overflow: número a representar é maior que maior
número possível de ser representado
◦ Underflow: número a representar é menor que menor
número possível de ser representado
85
Operações com ponto flutuante
◦ Considere o seguinte computador hipotético com dois
dígitos (p=2), base B=10 e expoente na faixa -4 e 5.
Logo temos .d1d2 x 10e.
87
88
Efetuar as seguintes operações de ponto
flutuante e calcular os erros absoluto e
relativo para cada uma delas. Identificar se
em algum dos casos ocorre overflow ou
underflow.
◦ Considere o seguinte computador hipotético com
dois dígitos (p=2), base B=10 e expoente na faixa
-5 e 5. Logo temos .d1d2 x 10e.
89
Considere que nas operações de soma e
subtração você tem 4 dígitos para armazenar
temporariamente os números APÓS a
conversão de base.
90
Exemplo:
◦ 342 + 92,53 = 0,3420x103 + 0,9253x102
◦ = 0,3420x103 + 0,092x103
= 0,4345 x103
Opções para armazenar
◦ Arredondar para cima: 0,44 x103
◦ 4,4 x 102
◦ Arredondar para baixo: 0,43x103
◦ 4,3 x 102
◦ Truncar: 0,43x103
Soma e Subtração: alinhar as casas
◦ 4,3 x 10 2
decimais para o maior expoente e
somar as mantissas
91
Considere que nas operações de
multiplicação e divisão você tem:
◦ 4 (2p) dígitos para efetuar as operações
92
Exemplos
◦ 32 x 0,05 = 0,32x102 x 0,5x10-1
= (0,32x0,5) x 102+(-1)
= 0,16 x 101
Opções para armazenar
◦ Arredondar para cima: 0,18 x101
1
Valor Original
+1 Shift + 1 para direita
+1
0,25
...
...
Normalizar:
95
96
210+0,75
97
98
99
100+100
100
100-0,25 Bit escondido
◦ Alinhe.
◦ Subtraia as mantissas.
◦ Normalize.
0 10000101 1.10001111000000000000000
103
104
100 x 0,25 Bit escondido
◦ Multiplique as mantissas.
◦ Some os expoentes.
◦ Normalize.
100 -> 133- 127= 6
0,25 -> 125-127 = -2
1.10010000….000
+6-2=4
127+4 = 10000011
0 10000011 10010000….000
Multiplicação: multiplicar as
mantissas e somar os expoentes.
Divisão; dividir as mantissas e
subtrair os expoentes. 105
106
210x0,75
107
100 / 0,25 Bit escondido
◦ Divida as mantissas.
◦ Subtraia os expoentes.
◦ Normalize.
11001000…/ 1000
6-(-2) = 8
127+8 = 10000111
1.100100000…0000000
Multiplicação: multiplicar as
mantissas e somar os expoentes.
Divisão; dividir as mantissas e
subtrair os expoentes. 108
109
210/0,75
110