Download - ICC-04 Sistemas Numéricos
Números e Aritmética Binária
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 2
Introdução� Computador � manipula/armazena informação na forma de números� Info = instruções, dados
� Sistema numérico padrão � decimal (0,..., 9)� Computador � sistema binário
� Vantagens:� Necessidade de apenas 2 níveis de tensão nos circuitoseletrônicos
� Programas � expressões algébricas � representadas pela álgebra booleana, que é baseada em sistema binário
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 3
O Conceito de Número� Número
� Expressa quantidade em relação à uma unidade
� Numeral� Símbolos que representam números
� Sistemas Numéricos:� Algarismos: “numerais de valor próprio”
� Usados para gerar os numerais para todos os números
� Base: quantidade de algarismos
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 4
Sistema Decimal
� Posicional
6903 = 6 x 103 + 9 x 102 + 0 x 101 + 3 x 100
6903 = 6.000 + 900 + 0 + 3
Numeral Base
Algarismo
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 5
Sistema Binário
� Posicional� Algarismos: 0 e 1� Base: 2
101b = 1 x 22 + 0 x 21 + 1 x 20
101b = 4 + 0 + 1 = 5d
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 6
Correspondência entre entre os dezesseis primeiros numerais decimais e binários
DECIMAL BINÁRIO DECIMAL BINÁRIO
0 0 8 1000
1 1 9 1001
2 10 10 1010
3 11 11 1011
4 100 12 1100
5 101 13 1101
6 110 14 1110
7 111 15 1111
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 7
Números Reais e Conversões de Bases
� Decimal fracionário: 1,8125
1,8125 = 1 x 100 + 8 x 10-1 + 1 x 10-2 + 2 x 10-3 + 5 x 10-4
1,8125 = 1 + 0,8 + 0,01 + 0,002 + 0,0005
� Binário fracionário: 1,1101
1,1101 = 1 x 20 + 1 x 2-1 + 1 x 2-2 + 0 x 2-3 + 1 x 2-4
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 8
Conversão entre Binário e Decimal
� Representações binária e decimal não alteram quantidade representada
� Conversão para Decimal� Ex.1:
1001b = 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20
= 8 + 0 + 0 + 1 = 9d� Ex.2:
1,0110b = 1 x 20 + 0 x 2-1 + 1 x 2-2 + 1 x 2-3 + 0x2-4
= 1 + 0 + 0,25 + 0,13 + 0 = 1,38d
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 9
Conversão para Binário
� Caso N seja inteiro: p.ex., 1919
1 9
1 4
0 2
0 1
1 0 19d = 10011b
2
2
2
2
2
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 10
� Caso N seja menor que 1: p.ex., 0.690,69 x 2 = 1 ,380,38 x 2 = 0,76
0,76 x 2 = 1,520,52 x 2 = 1,04
0,04 x 2 = 0,08 0,08 x 2 = 0,16
0,69d = 0,101100...b
Conversão para Binário
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 11
Conversão para Binário� Caso N seja fracionário e maior que 1?Ex.: Converter o decimal 19,69 para a base 2:
� • Converter a parte inteira19d = 10011b, conforme visto anteriormente.
� • Converter a parte fracionária0,69d = 0,101100b, conforme visto anteriormente
� • Unir as partes
19,69d = 10011,101100b
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 12
Outras Bases Numéricas� Sistema Octal
� Base: 8� Algarismos: 0, 1, 2, 3, ..., 7
� Sistema Hexadecimal� Base: 16� Algarismos: 0, 1, 2, ..., 9, A, B, C, D, E, F
� 3 dígitos binários � 8 (23) números� 4 dígitos binários � 16 (24) números
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 13
Conversão do Sistema Hexadecimal
� Correspondência das bases 2, 8 e 16:
2 3 7 4 , 6 4 5 2 => octal---- ------ ------ ------ ------ ------ ------ ------1 0 0 1 1 1 1 1 1 0 0 , 1 1 0 1 0 0 1 0 1 0 1 0 => binário------ -------- --------- -------- -------- --------
4 F C , D 2 A => hexa
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 14
De Hexadecimal para Decimal
7AB016 = 7 x 163 + 10 x 162 + 11 x 161 + 0 x 160
= 28.672 + 2.560 + 176 + 0
= 31.40810
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 15
De Decimal para Hexadecimal
1989 16
5 124 16
12 7
=> ou seja, 198910 = 7C516
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 16
De Hexadecimal para Octal1 F
----- ------
0001 1111 = 00 011 111
--- ----- ----
0 3 7
==> 1F16 = 378
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 17
De Octal para Hexadecimal5 5
---- ----
101 101 = 10 1101
--- ------
2 D
=> 558 = 2D16
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 18
Tipos de Informação
� Representadas por seqüências binárias� 4 bits � “nibble”� 8 bits � “byte”
� Pode ocupar 1 ou + palavras (word) na memória
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 19
Tipos de Informação
InstruçõesPonto Fixo
InformaçãoNuméricos
Dados Ponto Flutuante
Não-numéricos (caracteres e outros)
Depende do fabricante do processador
Padrões deRepresentação
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 20
Dados Numéricos
� Definidos com base nos fatores:� Tipos de números� Faixa de valores possíveis� Precisão do número� Custo do hardware
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 21
Números em Ponto Fixo
� Dígitos para representar:� Parte inteira� Parte fracionária
� Cada dígito tem um peso de acordo com sua posição relativa à vírgula decimal (Notação Posicional)
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 22
Números em Ponto Fixo
� 1,1101 é representado como:
� Vírgulas (ou pontos) não são representadas
� Cabe à instrução (processador) reconstituí-lo
00000001 (parte inteira)
11010000 (parte fracionária)
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 23
Números em Ponto Fixo
� Números com sinal:� Bit mais a esquerda = 1. Número negativo
� Bit mais a esquerda = 0. Número positivo
� xn-1xn-2...x2x1x0
sinal magnitude (partes inteira e fracionária)
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 24
Números em Ponto Fixo
� Faixa de representação de números inteiros com “n” bits:� -2n <= N <= 2n - 1
� Faixa de representação de frações com “n” bits:� 0 <= |N| <= 1 - 2-n
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 25
Números em Ponto Flutuante� Para representar números muito grandes ou muito pequenos com, relativamente, poucos dígitos:
� 1,0 x 1018 = 1.000.000.000.000.000.000� pto. flutuante ponto fixo� Um número ponto flutuante tem a forma M x BE
onde M = mantissa; B = base e E = expoente
Em 1,0 x 1018 => M = 1,0; B = 10 e E = 18
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 26
Números em Ponto Flutuante� Número em ponto flutuante é armazenado na memória como o par:� Uma Mantissa M (fração/inteiro)� Um Expoente E (inteiro)
� A base é constante (potência de r: 2, 10)� Precisão: número de bits de M� Faixa de valores possíveis: determinada por B e E (máximo 2n)
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 27
Números em Ponto Flutuante� 1,0 x 1018, 0,1 x 1019, 1000000 x 1012, e 0,000001 x 1024 são equivalentes
� Normalização:� Só a parte fracionária da mantissa érepresentada
� Intenção � garantir o máximo de bits possíveis da mantissa para representar o número
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 28
Números em Ponto Flutuante• Padrão IEEE 754 – normalizado, expoente em excesso 127
N = (-1)S x 1.M x 2E • precisão simples
31 30 23 22 0
• precisão dupla
63 62 52 51 32
31 0
S EXPOENTE EM EXECESSO MANTISSA
S EXPOENTE EM EXECESSO MANTISSA
MANTISSA
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 29
Números em Ponto FlutuanteExemplo
-0,7510 = -0,112
Normalizando 1,12 2 -1
31 30 23 22 0
0 1 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Exemplo: Qual o decimal correspondente ?
1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
N= - ( 1+0.5) x 2(129-127) = -1,5 x 4 = -6,0
31 30 23 22 0
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 30
Números em Ponto Flutuante� A normalização restringe a magnitude |M| de uma mantissa fracionária à faixa (para números com B = 2):
0,5 <= |M| < 1 ou M = 0� 0,1000000...0 = 0,5� 0,1111111...1 < 1,0
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 31
Números em Ponto Flutuante� Qual seria a precisão e a faixa de valores possíveis para um número representado em ponto flutuante?� Precisão
� Mantissa: se tem 24 bits, então precisão é de 224 = 16.777.216
� Faixa� Base e expoente: 8 bits � -28 a + 28 –1 = -256 até+255
� Logo, faixa fica de 2-256 a 2+255
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 32
Números em Ponto Flutuante
� Como se representaria o número zero?� 0 x BE = 0 para todos os valores de E� Mas nem sempre a mantissa é exatamente zero...
� “E” deve ser um número negativo grande
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 33
Números em Ponto Flutuante
� Para efeitos de comparação com zero:� Expoente codificado em excesso -2k-1 (polarizador), assim
� Expoente 0000 representa número –8� Expoente 0001 representa número -7
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 34
Aritmética Binária - Adição
ADENDO AUGENDO RESULTADO “VAI-UM ”
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
001000112010001112 +011010102
35107110 +10610
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 35
Aritmética Binária - SubtraçãoMINUENDO SUBTRAENDO RESULTADO “EMPRESTA-
UM”0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0
010001112001000112 +001001002
71103510 +3610
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 36
Aritmética Binária –Multiplicação
MUTIPLICANDO MULTIPLICADOR RESULTADO0 0 00 1 01 0 01 1 1
4 ...................... 1 0 03 ...................... 0 1 1 x
-------------1 0 0
1 0 0 + --------------
12 ................. 1 1 0 0
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 37
Aritmética Binária – DivisãoDIVIDENDO DIVISOR QUOCIENTE
0 1 0
1 1 1
1 1 0 0 1 0 / 101
1 1 0 0 1 0 1 0 1- 1 0 1 1 0 1 0____0 0 1 0 1- 1 0 1________0 0 0 0
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 38
Complementos
� Resolver a desvantagem do desperdício de 1 bit para armazenamento do sinal� Bit mais significativo é usado ao mesmo tempo para representação do sinal e de parte do número
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 39
Complemento de 1� É o que falta para chegar ao valor máximo da cadeia de bits
� Ex.: Complemento de 0101 é o que falta para chegar a 1111. Basta subtrair de 1111
pois 11110101 –1010
01011010 +1111
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 40
Complemento de 1
� Para simplificar, basta inverter os bits:
� Mas apresenta problemas para a (dupla) representação do zero (0000 e 1111) e na soma de 2 números negativos
0 � 11 � 0
0101
1010 Complemento de 1
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 41
Complemento de 2� Calcular o complemento de 1� Somar 1
� Ex.: 0101 � Complemento de 1 = 10101 +
1011- 5 em complemento de 2
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 42
Complemento de 2� Elimina a necessidade de subtrações� Bit carry deve ser desprezado
� Quando o resultado é negativo, o que se obtém é seu complemento de 2:
010001112110111012 +
1 001001002 = 3610
71103510 –3610
001000112101110012 +
1110111002 = DC16
35107110 –-3610
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 43
Soma usando Complemento de 2
Ex.: 4 bits � faixa de –8 a +7
+ 2 � 0010 -3 � 1101 + 3 � 0011 -4 � 1100+ 5 � 0101 -7 � 11001
+ 4 � 0100 - 5 � 1011 + 5 � 0101 - 6 � 1010+ 9 � 1001 -11 � 11001
OVERFLOW
OK
+1 +1+1
+1+1
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 44
Caracteres
� Armazenamento e transmissão de infotextuais� Definição de códigos em que combinações de bits representam letras, algarismos usados em textos, pontuação, etc.
� � caracter
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 45
Códigos de Caracteres Decimais� Conversão de binário-decimal denúmeros decimais no formato texto:� BCD: Binary Coded Decimal
� Representado pelo seu equivalente de 4 bits
� EBCDIC: Extended BCD Interchange Code� Igual ao BCD + 4 bits (campo zonado) que não são usados para dados numéricos
� ASCII: � Princípio igual ao do EBCDIC
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 46
Códigos de Caracteres Decimais
� Excesso-3:� Igual ao BCD mais 0011 (3)
� 2-entre-5:� Cada dígito decimal é representado por uma seqüência de 5 bits contendo dois 1`s e três 0`s.
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 47
Códigos de Caracteres Decimais
Dígito CÓDIGO DECIMALDecimal BCD EBCDIC ASCII Excesso-3 2-entre-5
0 0000 11110000 00110000 0011 11000 1 0001 11110001 00110001 0100 000112 0010 11110010 00110010 0101 001013 0011 11110011 00110011 0110 001104 0100 11110100 00110100 0111 010015 0101 11110101 00110101 1000 010106 0110 11110110 00110110 1001 011007 0111 11110111 00110111 1010 100018 1000 11111000 00111000 1011 100109 1001 11111001 00111001 1100 10100
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 48
Paridade� Paridade de um caractere é um bit extra usado para detecção de erro simples (como no caso do código 2-entre-5).� Paridade par: número de 1`s do caractere é par � bit de paridade par = 0
� Paridade ímpar: número de 1`s do caractere é par � bit de paridade ímpar = 1
Introdução à Ciênciada Computação
Eduardo Nicola F. Zagari 49