You are on page 1of 100

Prof. Dr. João Marcos B.

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

 Conversão de Sistemas e Base

 Representação em Ponto Flutuante

 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),

100= ‫(ק‬kuph), 11=  ‫י‬, 101= ‫ ק‬15=‫( טו‬9+6)

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

◦ Base decimal (10)

 “Posição” da parte inteira indica potência positiva de 10

 Potência negativa de 10 para parte fracionária

 54,32 = 5x101 + 4x100 + 3x10-1 + 2x10-2

8
 Representação de números fracionários

◦ Base binária (2)

 “Posição” da parte inteira indica potência positiva de 2

 Potência negativa de 2 para parte fracionária

 10,11 na base 2 = 1x21 + 0x20 + 1x2-1 + 1x2-2 =

2+0+1/2+1/4 = 2,75 na base decimal

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

 Exercício: Converter para decimal os números binários:


◦ 112
◦ 10102
◦ 100101102
◦ 101,012
◦ 11,112

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

Em inglês, Most Significant Bit – MSB e Least


Significat Bit – LSB, respectivamente. 16
 Exemplo: Converter 25 decimal para binário
◦ 25 / 2 = 12 (quociente) e resto 1=bms
◦ 12 / 2 = 6 (quociente) e resto 0
◦ 6 / 2 = 3 (quociente) e resto 0
◦ 3 / 2 = 1 (último quociente=BMS) e resto 1

 Binário = BMS ... bms = 11001


= 1x24 + 1x24 + 0x22 + 0x21 + 1x20
= 16 + 8 + 0 + 0 + 1 = 25 decimal

17
 Procedimentos básicos: - divisão
- polinômio
- agrupamento de bits

polinômio polinômio

HEXADECIMAL DECIMAL OCTADECIMAL


divisão divisão

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

 Não é realizada diretamente não há relação de


potências entre as bases oito e dezesseis.

 Semelhante à conversão entre duas bases


quaisquer base intermediária (base binária)

 Conversão em duas etapas:


1 - número: base octal (hexadecimal) binária
2 - resultado intermediário: binária hexadecimal (octal)

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

◦ 0,625 x 2 = 1,25 logo a primeira casa fracionária é 1;


nova fração (resto) é 0,25 (1,25-1=0,25)

◦ 0,25 x 2 = 0,5 segunda casa é 0 ; resto é 0,5


◦ 0,5 x 2 = 1,0 terceira casa é 1 ; resto é zero.
◦ Resultado: 0,62510 = 0,1012

23
 Exemplo: converter 0,4 decimal para binário

◦ 0,4 x 2 = 0,8 logo a primeira casa fracionária é 0 ; nova


fração (resto) é 0,8

◦ 0,8 x 2 = 1,6 segunda casa é 1 ; resto é 0,6 (1,6 – 1)


◦ 0,6 x 2 = 1,2 terceira casa é 1 ; resto é 0,2 (1,2 – 1).
◦ 0,2 x 2 = 0,4 quarta casa é 0 ; resto é 0,4.
e então começa uma dízima periódica...
◦ 0,410 = 0,011001100110....2

24
 Para converter um número com parte inteira e

parte fracionária, fazer a conversão de cada

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

 0 - 1 = 1 (e vai 1* para ser subtraído no dígito seguinte)

 1-0=1

 1-1=0

◦ Exemplo: Efetuar a seguinte subtração


 11011102 - 101112

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

◦ Exemplos: Efetuar as seguintes multiplicações


 10112 x 10102
 1112 x 1112

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.

◦ Exemplo: Efetuar a seguinte divisão


 1000112 ÷ 1012

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 ,

 t é o número de dígitos da mantissa


 d1d2...dt = mantissa, com 0 di  (b-1)
 exp = expoente (inteiro com sinal)
 b = base

 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

◦ Menor número positivo é (lembre do bit escondido)


 0 001 0000 = + 2-2 x 1,0000 = 0,012 ou 0,25
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]

Dupla (64 bits) 1 [bit63] 11 [bits62-52] 52 [bits51-00]

 Sinal: 0 = + e 1 = -

 Combinações Sinal + Expoente + Significando

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

 sinal=1 e significando =10...0: indeterminado


 c/outras combinações: NAN

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

 sinal=0 e significando = 0...0 : +zero

73
 Expoentes na precisão simples c/256 combinações

(0) 0000 0000 (especial)


(1) 0000 0001 (2-126) menor expoente
..............
0111 1100
(125) 0111 1101 (2-2)
(126) 0111 1110 (2-1)
(127) 0111 1111 (20)
(128) 1000 0000 (21)
(129) 1000 0001 (22)
1000 0010
.............
(254) 1111 1110 (2127) maior expoente
(255) 1111 1111 (especial)

74
 Menor número positivo (lembre do bit escondido)
◦ 0 00000000 00….01 = 2-126 x 2-23 = 2-149

 Maior número positivo (lembre do bit escondido)


◦ 0 11111110 11...11 = 2127 x (2-2-23)

 A faixa de números negativos é:


◦ de –(2-2-23) x 2127 a –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

 Maior número positivo (lembre do bit escondido)


◦ 0 1111110 11...11 = 21023 x (2-2-52)

 A faixa de números negativos é:


◦ de –(2-2-52) x 21023 a –2-1074

77
 Expoentes na precisão dupla c/2048 combinações

(0) 00000000000 (especial)


(1) 00000000001 (2-1022) menor expoente
..............
01111111100
01111111101 (2-2)
(1022) 01111111110 (2-1)
(1023) 01111111111 (20)
(1024 10000000000 (21)
10000000001 (22)
10000000010
.............
(2046) 11111111110 (21023) maior expoente
(2047) 11111111111 (especial)

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)

1,100100 x 26 (normaliza o número: um bit apenas antes da virgula)


6 + 127 = 133 (soma o expoente resultante com 127 e converte para
binário)
133(10) = 1000 0101(2)

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.

 Represente os seguintes números neste computador


◦ 4,32
◦ 0,064
◦ 371 sinal expoente mantissa
◦ 1234
◦ 0,00183
◦ 0,000000012
◦ 1234567

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

◦ Arredondar para baixo: 0,17x101

◦ Truncar: 0,16x101 Multiplicação: multiplicar as


mantissas e somar os expoentes.
Divisão; dividir as mantissas e
subtrair os expoentes. 93
 0,25 + 100

Alinhar as casas decimais:


 Shift +1 na mantissa para Esquerda, diminui o expoente em 1
 Shift +1 na mantissa para Direita, aumenta o expoente em 1
133-125

Soma e Subtração: alinhar as casas


decimais para o maior expoente e
somar as mantissas
94
Não esqueça do bit escondido

1
Valor Original
+1 Shift + 1 para direita

+1 Shift + 2 para direita

+1
0,25
...
...

+1 Shift + 8 para direita

Não esqueça do bit escondido no 100


Somar:

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

Soma e Subtração: alinhar as casas


decimais para o maior expoente e
somar as mantissas
101
102
 210-0,75

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

You might also like