Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Sistemas Numéricos EMA8996 / 2011 Alexandro Baldassin “No mundo há 10 tipos de pessoas: as que sabem contar em binário e as que não sabem” Sistemas Numéricos Representação posicional Nr = dn-1...d2d1d0 Número Base n dígitos dígito mais significativo dígito menos significativo Sistemas Numéricos Representação posicional Quantos valores possíveis? Nr = dn-1...d2d1d0 Número Base n dígitos dígito mais significativo dígito menos significativo Sistemas Numéricos Representação posicional Quantos valores possíveis? Nr = dn-1...d2d1d0 Número Base n dígitos dígito mais significativo dígito menos significativo rn Sistemas Numéricos Forma polinomial Exemplo Sistema Decimal r = 10 d {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} n = 4 N = 3017 Exemplo Sistema Decimal r = 10 d {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} n = 4 N = 3017 Sistema Binário Representação básica usada em computação Por quê? r = 2 d {0, 1} Sistema Binário Representação básica usada em computação Por quê? Exemplo: 10112 r = 2 d {0, 1} Sistema Binário Representação básica usada em computação Por quê? Exemplo: 10112 r = 2 d {0, 1} Sistema Binário Como converter de decimal para binário? encontrar expansão em potência de 2 divisão sucessivas Exemplo: 35710 Sistema Binário Como converter de decimal para binário? encontrar expansão em potência de 2 divisão sucessivas Exemplo: 35710 28 256 357-256 = 101 Sistema Binário Como converter de decimal para binário? encontrar expansão em potência de 2 divisão sucessivas Exemplo: 35710 28 256 357-256 = 101 26 64 101-64 = 37 Sistema Binário Como converter de decimal para binário? encontrar expansão em potência de 2 divisão sucessivas Exemplo: 35710 28 256 357-256 = 101 26 64 101-64 = 37 25 32 37-32 = 5 Sistema Binário Como converter de decimal para binário? encontrar expansão em potência de 2 divisão sucessivas Exemplo: 35710 28 256 357-256 = 101 26 64 101-64 = 37 25 32 37-32 = 5 22 4 5-4 = 1 Sistema Binário Como converter de decimal para binário? encontrar expansão em potência de 2 divisão sucessivas Exemplo: 35710 28 256 357-256 = 101 26 64 101-64 = 37 25 32 37-32 = 5 22 4 5-4 = 1 20 1 1-1 = 0 Sistema Binário Como converter de decimal para binário? encontrar expansão em potência de 2 divisão sucessivas Exemplo: 35710 28 256 357-256 = 101 26 64 101-64 = 37 25 32 37-32 = 5 22 4 5-4 = 1 20 1 1-1 = 0 Sistema Binário Divisões sucessivas por 2 357 2 = Sistema Binário Divisões sucessivas por 2 357 2 = 178 1 Sistema Binário Divisões sucessivas por 2 357 2 = 178 1 178 2 = 89 0 Sistema Binário Divisões sucessivas por 2 357 2 = 178 1 178 2 = 89 0 89 2 = 44 1 Sistema Binário Divisões sucessivas por 2 357 2 = 178 1 178 2 = 89 0 89 2 = 44 1 44 2 = 22 0 22 2 = 11 0 11 2 = 5 1 5 2 = 2 1 2 2 = 1 0 1 2 = Sistema Binário Divisões sucessivas por 2 357 2 = 178 1 178 2 = 89 0 89 2 = 44 1 44 2 = 22 0 22 2 = 11 0 11 2 = 5 1 5 2 = 2 1 2 2 = 1 0 1 2 = 0 1 Sistema Binário Divisões sucessivas por 2 357 2 = 178 1 178 2 = 89 0 89 2 = 44 1 44 2 = 22 0 22 2 = 11 0 11 2 = 5 1 5 2 = 2 1 2 2 = 1 0 1 2 = 0 1 bit menos significativo Sistema Binário Divisões sucessivas por 2 357 2 = 178 1 178 2 = 89 0 89 2 = 44 1 44 2 = 22 0 22 2 = 11 0 11 2 = 5 1 5 2 = 2 1 2 2 = 1 0 1 2 = 0 1 bit menos significativo 35710 = 1011001012 Máquina x Humano Base 2 (Máquina) x Base 10 (Humano) Conversão entre bases não é direta 100101011000101000100011110100012 Máquina x Humano Base 2 (Máquina) x Base 10 (Humano) Conversão entre bases não é direta Quantos bits são necessários para representar N dígitos decimais? 250885832110 100101011000101000100011110100012 Máquina x Humano Base 2 (Máquina) x Base 10 (Humano) Conversão entre bases não é direta Quantos bits são necessários para representar N dígitos decimais? 250885832110 100101011000101000100011110100012 log210 N=~ 3.32N Sistema Hexadecimal 4 bits 1 dígito hexa r = 16 d {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} hexa binário decimal A 1010 10 B 1011 11 C 1100 12 D 1101 13 E 1110 14 F 1111 15 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada 100101011000101000100011110100012 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada binário 1001 0101 1000 1010 0010 0011 1101 0001 hexa 100101011000101000100011110100012 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada binário 1001 0101 1000 1010 0010 0011 1101 0001 hexa 1 100101011000101000100011110100012 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada binário 1001 0101 1000 1010 0010 0011 1101 0001 hexa D 1 100101011000101000100011110100012 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada binário 1001 0101 1000 1010 0010 0011 1101 0001 hexa 3 D 1 100101011000101000100011110100012 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada binário 1001 0101 1000 1010 0010 0011 1101 0001 hexa 9 5 8 A 2 3 D 1 100101011000101000100011110100012 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada binário 1001 0101 1000 1010 0010 0011 1101 0001 hexa 9 5 8 A 2 3 D 1 100101011000101000100011110100012 958A23D116 = 0x958A23D1 Conversão Binário-Hexa Para hexadecimal: agrupar em grupos de 4 bits cada Para binário: expandir cada dígito hexa em 4 bits binário 1001 0101 1000 1010 0010 0011 1101 0001 hexa 9 5 8 A 2 3 D 1 100101011000101000100011110100012 958A23D116 = 0x958A23D1 Aritmética Adição, subtração, multiplicação, divisão Bases 2 e 16 Seguem mesma regra do sistema decimal Lembrar que números possuem representação finita overflow Números sinalizados Como representar números negativos? Características número possível de valores únicos representáveis intervalo de números positivos e negativos circuito digital para aritmética deve ser simples Importante definir o número de bits da arquitetura Sinal-Magnitude Motivação: sistema decimal Exemplo: +10, -10 Número possue duas componentes sinal: bit mais significativo (0=positivo/1=negativo) magnitude: os bits restantes (n-1) representam o valor absoluto Sinal-Magnitude Motivação: sistema decimal Exemplo: +10, -10 Número possue duas componentes sinal: bit mais significativo (0=positivo/1=negativo) magnitude: os bits restantes (n-1) representam o valor absoluto 0001 0010 0011 0100 0101 0110 0111 1111 1110 1101 1100 1011 1010 1001 - + +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits 0 Sinal-Magnitude Motivação: sistema decimal Exemplo: +10, -10 Número possue duas componentes sinal: bit mais significativo (0=positivo/1=negativo) magnitude: os bits restantes (n-1) representam o valor absoluto 0001 0010 0011 0100 0101 0110 0111 1111 1110 1101 1100 1011 1010 1001 1000 0000 - + +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits 0 Sinal-Magnitude Para uma arquitetura de 8 bits, como representar: +85? -85? 0 10101012 Sinal-Magnitude Para uma arquitetura de 8 bits, como representar: +85? 0 10101012 -85? 1 10101012 Sinal-Magnitude Para uma arquitetura de 8 bits, como representar: Desvantagens +85? 0 10101012 -85? 1 10101012 Sinal-Magnitude Para uma arquitetura de 8 bits, como representar: Desvantagens dois zeros circuito aritmético complexo (adição, subtração, ...) +85? 0 10101012 -85? 1 10101012 Sinal-Magnitude Para uma arquitetura de 8 bits, como representar: Desvantagens dois zeros circuito aritmético complexo (adição, subtração, ...) Vantagem +85? 0 10101012 -85? 1 10101012 Sinal-Magnitude Para uma arquitetura de 8 bits, como representar: Desvantagens dois zeros circuito aritmético complexo (adição, subtração, ...) Vantagem circuito de negação simples +85? 0 10101012 -85? 1 10101012 Representação por Complemento O complemento diminuído de um número N de n dígitos em um sistema base r é Nc-1: O complemento de um número N de n dígitos em um sistema base r é Nc: Nc = rn - N Nc-1 = (rn -1)- N Sistema Binário: Complemento de 1 Complemento de 1 Nc-1 = (2n -1)- N 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits 0 Sistema Binário: Complemento de 1 Complemento de 1 Nc-1 = (2n -1)- N 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits 0 Sistema Binário: Complemento de 1 Complemento de 1 Regra prática para conversão inverter todos os bits da palavra Nc-1 = (2n -1)- N +85= 0101 01012 -85= 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits 0 Sistema Binário: Complemento de 1 Complemento de 1 Regra prática para conversão inverter todos os bits da palavra Nc-1 = (2n -1)- N +85= 0101 01012 -85= 1010 10102 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits 0 Complemento de 1 Bit mais significativo = bit de sinal Desvantagens Complemento de 1 Bit mais significativo = bit de sinal Desvantagens dois zeros circuito aritmético não tão simples Vantagem Complemento de 1 Bit mais significativo = bit de sinal Desvantagens dois zeros circuito aritmético não tão simples Vantagem circuito de negação simples Sistema Binário: Complemento de 2 Complemento de 2 (padrão daqui em diante) Nc = 2n - N 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits -8 1111 0 Sistema Binário: Complemento de 2 Complemento de 2 (padrão daqui em diante) Nc = 2n - N 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 0000 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits -8 1111 0 Sistema Binário: Complemento de 2 Complemento de 2 (padrão daqui em diante) Regra prática para conversão inverter todos os bits da palavra e somar 1 Nc = 2n - N 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 0000 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits -8 1111 0 Sistema Binário: Complemento de 2 Complemento de 2 (padrão daqui em diante) Regra prática para conversão inverter todos os bits da palavra e somar 1 Nc = 2n - N Nc = 2n - N Nc = 2n – N+1-1 Nc =[ (2n -1)– N]+1 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 0000 +1 +2 +3 +4 +5 +6 +7 -7 -6 -5 -4 -3 -2 -1 4 bits complemento de 1 -8 1111 0 Complemento de 2 +85= 0101 01012 -85= Complemento de 2 +85= 0101 01012 -85= 1010 10112 Complemento de 2 Bit mais significativo = bit de sinal Desvantagem: +85= 0101 01012 -85= 1010 10112 Complemento de 2 Bit mais significativo = bit de sinal Desvantagem: circuito de negação ligeiramente mais complexo Vantagens: +85= 0101 01012 -85= 1010 10112 Complemento de 2 Bit mais significativo = bit de sinal Desvantagem: circuito de negação ligeiramente mais complexo Vantagens: usa mesmo circuito para aritmética sem sinal utiliza todos os valores (0 é único) +85= 0101 01012 -85= 1010 10112 Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) -1(4 bits) -1 (5bits) Maior número representávelcomnbits Menor número representável comnbits Número de zeros Complexidade circuito aritmético Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) 0001 0001 0001 0001 -1(4 bits) -1 (5bits) Maior número representávelcomnbits Menor número representável comnbits Número de zeros Complexidade circuito aritmético Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) 0001 0001 0001 0001 -1(4 bits) ND 1001 1110 1111 -1 (5bits) Maior número representávelcomnbits Menor número representável comnbits Número de zeros Complexidade circuito aritmético Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) 0001 0001 0001 0001 -1(4 bits) ND 1001 1110 1111 -1 (5bits) ND 10001 11110 11111 Maior número representávelcomnbits Menor número representável comnbits Número de zeros Complexidade circuito aritmético Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) 0001 0001 0001 0001 -1(4 bits) ND 1001 1110 1111 -1 (5bits) ND 10001 11110 11111 Maior número representávelcomnbits 2n-1 2n-1-1 2n-1-1 2n-1-1 Menor número representável comnbits Número de zeros Complexidade circuito aritmético Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) 0001 0001 0001 0001 -1(4 bits) ND 1001 1110 1111 -1 (5bits) ND 10001 11110 11111 Maior número representávelcomnbits 2n-1 2n-1-1 2n-1-1 2n-1-1 Menor número representável comnbits 0 -2n-1+1 -2n-1+1 -2n-1 Número de zeros Complexidade circuito aritmético Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) 0001 0001 0001 0001 -1(4 bits) ND 1001 1110 1111 -1 (5bits) ND 10001 11110 11111 Maior número representávelcomnbits 2n-1 2n-1-1 2n-1-1 2n-1-1 Menor número representável comnbits 0 -2n-1+1 -2n-1+1 -2n-1 Número de zeros 1 2 2 1 Complexidade circuito aritmético Tabela Resumo Sem sinal Sinal-magnitude Complemento de 1 Complementode 2 +1 (4 bits) 0001 0001 0001 0001 -1(4 bits) ND 1001 1110 1111 -1 (5bits) ND 10001 11110 11111 Maior número representávelcomnbits 2n-1 2n-1-1 2n-1-1 2n-1-1 Menor número representável comnbits 0 -2n-1+1 -2n-1+1 -2n-1 Número de zeros 1 2 2 1 Complexidade circuito aritmético baixa alta média baixa Overflow Lembre-se que uma representação numérica é finita n bits – 2n valores Overflow resultado de uma operação aritmética entre 2 números de n bits não pode ser representado em n bits Overflow Lembre-se que uma representação numérica é finita n bits – 2n valores Overflow resultado de uma operação aritmética entre 2 números de n bits não pode ser representado em n bits 4 bits, não sinalizado [0,15] : 10+8=2 1010 +1000 0010 Como detectar overflow? Overflow 4 bits, sinalizado [-8,7] : 5+3=-8 0101 +0011 1000 -5-4=-5+(-4)=7 1011 +1100 0111 Como detectar overflow? bit mais significativo dos operandos com mesmo sinal, mas resultado com sinal oposto Overflow 4 bits, sinalizado [-8,7] : 5+3=-8 0101 +0011 1000 -5-4=-5+(-4)=7 1011 +1100 0111 Overflow - Acidente Extensão de Sinal Converter um número de um sistema com n bits para outro com m bits, onde m>n Exemplo de 8 bits para 16 bits não sinalizado Extensão de Sinal Converter um número de um sistema com n bits para outro com m bits, onde m>n Exemplo de 8 bits para 16 bits não sinalizado completar com 0’s sinalizado (complemento de 2) 0101 01012 0000 0000 0101 01012 Extensão de Sinal Converter um número de um sistema com n bits para outro com m bits, onde m>n Exemplo de 8 bits para 16 bits não sinalizado completar com 0’s sinalizado (complemento de 2) completar com o bit de sinal 0101 01012 0000 0000 0101 01012 1101 01012 1111 1111 1101 01012 Como representar números reais? Números com ambas partes inteira e fracionária Números excessivamente grandes 299792458m/s (2,99792458 x 108) Números especialmente pequenos 0.0000000000529177m (5,291771 x 10-11) Velocidade da luz e Raio de Bohr. 82 Ponto Fixo Exemplo d1d0.d-1d-2d-3d-4 ponto binário parte fracionária parte inteira 10.1012 = 1x21 + 0x20 + 1x2-1 + 0x2-2 + 1x2-3 10.1012 = 2 + 0 + 0.5 + 0 + 0.125 10.1012 = 2.625 Ponto Fixo Uso em sistemas embarcados e aplicações específicas Grande desvantagem Faixa de valores limitada Exemplo anterior (2 bits inteiros + 4 fracionários) Assumindo não-sinalizado, faixa de 0 até 3,9375 Alternativa mais flexível necessária Ponto flutuante Ponto Flutuante Como a notação científica, número é expresso por uma mantissa + expoente (ambos na base 2) Exemplo 1.0112 x 2-1 ponto binário mantissa base expoente Padrão IEEE 754 (1985) Representação para numeração usando ponto flutuante foi padronizada pela IEEE em 1985 Forma normalizada é usada (bit 1 antes do “ponto binário”) Dois formatos principais 32-bit, single-precision (float) 64-bit, double-precision (double) Formato Precisão Simples S expoente mantissa 1 bit 8 bits 23 bits Formato Precisão Simples S expoente mantissa 1 bit 8 bits 23 bits bit de sinal: 0 – positivo, 1 – negativo Formato Precisão Simples S expoente mantissa 1 bit 8 bits 23 bits bit de sinal: 0 – positivo, 1 – negativo como bit 1 antes do ponto binário é implícito, resolução é de 24 bits Formato Precisão Simples S expoente mantissa 1 bit 8 bits 23 bits bit de sinal: 0 – positivo, 1 – negativo Não é usada representação em complemento de 2, e sim a representação excesso (bias) Para obter o valor real do expoente, subtrai-se 127 do campo expoente como bit 1 antes do ponto binário é implícito, resolução é de 24 bits Formato Precisão Simples S expoente mantissa 1 bit 8 bits 23 bits bit de sinal: 0 – positivo, 1 – negativo Não é usada representação em complemento de 2, e sim a representação excesso (bias) Para obter o valor real do expoente, subtrai-se 127 do campo expoente (-1)S x (1+mantissa) x 2(expoente-127) como bit 1 antes do ponto binário é implícito, resolução é de 24 bits 01000000000000000000000 Exemplo 0 01111100 01000000000000000000000 Exemplo 0 01111100 (-1)S x (1+mantissa) x 2(expoente-127) 01000000000000000000000 Exemplo 0 01111100 (-1)S x (1+mantissa) x 2(expoente-127) (-1)0 x (1+0,25) x 2(124-127) 01000000000000000000000 Exemplo 0 01111100 (-1)S x (1+mantissa) x 2(expoente-127) (-1)0 x (1+0,25) x 2(124-127) 1,25 x 2-3 = 0,15625 Exemplo Converter -2,340625 x 101 para ponto flutuante binário Exemplo Converter -2,340625 x 101 para ponto flutuante binário Passo 1: desnormalizar -23,40625 Exemplo Converter -2,340625 x 101 para ponto flutuante binário Passo 1: desnormalizar -23,40625 Passo 2: converter parte inteira 23 = 101112 Exemplo Converter -2,340625 x 101 para ponto flutuante binário Passo 1: desnormalizar -23,40625 Passo 2: converter parte inteira 23 = 101112 Passo 3: converter parte fracionária ,40625 = ,011012 Exemplo Converter -2,340625 x 101 para ponto flutuante binário Passo 1: desnormalizar -23,40625 Passo 2: converter parte inteira 23 = 101112 Passo 3: converter parte fracionária ,40625 = ,011012 Passo 4: juntar as partes e normalizar 10111,011012 => 1,0111011012 x 24 Exemplo Converter -2,340625 x 101 para ponto flutuante binário Passo 1: desnormalizar -23,40625 Passo 2: converter parte inteira 23 = 101112 Passo 3: converter parte fracionária ,40625 = ,011012 Passo 4: juntar as partes e normalizar 10111,011012 => 1,0111011012 x 24 Passo 5: converter expoente 127+4 = 131 = 1000 00112 Exemplo Converter -2,340625 x 101 para ponto flutuante binário Passo 1: desnormalizar -23,40625 Passo 2: converter parte inteira 23 = 101112 Passo 3: converter parte fracionária ,40625 = ,011012 Passo 4: juntar as partes e normalizar 10111,011012 => 1,0111011012 x 24 Passo 5: converter expoente 127+4 = 131 = 1000 00112 011 1011 0100 0000 0000 0000 1 1000 0011 Exceções Como representar o número zero? Exceções Como representar o número zero? Expoentes 0 e 255 reservados para casos específicos Desta forma, a faixa de valores vai de 2-126 a 2127(da ordem de 2x10-38 a 2x1038) Expoente Mantissa Valor 0 0 +/-0 0 não-zero desnormalizado 1-254 quaisquer dígitos +/-ponto flutuante 255 0 +/-infinito 255 não-zero NaN Exercício Qual o decimal equivalente do seguinte número em ponto flutuante IEEE 754 ? 1 1000 0001 111 0000 0000 0000 0000 00002 Exercício Qual o decimal equivalente do seguinte número em ponto flutuante IEEE 754 ? 1 1000 0001 111 0000 0000 0000 0000 00002 Exercício Qual o decimal equivalente do seguinte número em ponto flutuante IEEE 754 ? (-1)S x (1+mantissa) x 2(expoente-127) (-1)1 x (1+,1112) x 2(129-127) -1,1112x22 = -111,12 = -7,5 1 1000 0001 111 0000 0000 0000 0000 00002
Compartilhar