UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Arquitetura e Organização de Computadores Aritmética Computacional Prof. Helcio Wagner da Silva
Representação de Números Inteiros No sistema de numeração binária, é possível representar números inteiros negativos usando: Dígitos 0 e 1 Sinal de subtração Vírgula Exemplo: -1101,0101 2 = -13,3125 10 2
Representação de Números Inteiros Para armazenar e processar números inteiros negativos no computador, são usados apenas os dígitos 0 e 1 Como representar números negativos? Representação Sinal-Magnitude Representação em Complemento de Dois 3
Representação Sinal-Magnitude Em uma palavra de n bits O bit mais à esquerda representa o sinal do número inteiro Os n-1 bits mais à direita representam a magnitude do número inteiro Exemplo: +18 = 00010010-18 = 10010010 4
Representação Sinal-Magnitude Há duas representações para o zero +0 = 00000000-0 = 10000000 É mais difícil testar se um valor é igual a zero do que no caso em que há apenas uma representação para o zero Por isso, essa representação raramente é usada na implementação da parte inteira de uma ULA 5
Representação em Complemento de Dois A = -2 n-1 a n-1 + Σ n-2 i=02 i a i Para números inteiros positivos, a n-1 = 0 O número 0 é tratado como um número inteiro positivo Usada para representar números na faixa -2 n 2 n-1-1 Usada quase universalmente para representar números inteiros dentro do µp 6
Representação em Complemento de Dois Decimal S-M C-2 +8 - - +7 0111 0111 +6 0110 0110 +5 0101 0101 +4 0100 0100 +3 0011 0011 +2 0010 0010 +1 0001 0001 +0 0000 0000 Decimal S-M C-2-0 1000 - -1 1001 1111-2 1010 1110-3 1011 1101-4 1100 1100-5 1101 1011-6 1110 1010-7 1111 1001-8 - 1000 7
Representação em Complemento de Dois Conversão complemento de 2 decimal -128 64 32 16 8 4 2 1 1 0 0 0 0 0 1 1-128 +2 +1 = -125 Conversão decimal complemento de 2-120 = -128 64 32 16 8 4 2 1 1 0 0 0 1 0 0 0-128 +8 8
Representação em Complemento de Dois Às vezes é desejável converter a representação de um número inteiro com n bits para sua representação com m bits, onde m > n Na representação sinal-magnitude, isso pode ser feito facilmente Basta mover o bit de sinal para a posição mais à esquerda e preencher as demais posições novas com 0 9
Representação em Complemento de Dois Exemplos: +18 = 00010010 (s-m, 8 bits) +18 = 0000000000010010 (s-m, 16 bits) -18 = 10010010 (s-m, 8 bits) -18 = 1000000000010010 (s-m, 16 bits) Esse procedimento não funciona para números inteiros negativos representados em complemento de dois 10
Representação em Complemento de Dois Exemplos: +18 = 00010010 (c-2, 8 bits) +18 = 0000000000010010 (c-2, 16 bits) -18 = 11101110 (c-2, 8 bits) -32.658 = 1000000001101110 (c-2, 16 bits) A regra é mover o bit de sinal para a posição mais à esquerda e preencher as demais com valor igual ao bit de sinal 11
Representação em Complemento de Dois Exemplos: +18 = 00010010 (c-2, 8 bits) +18 = 0000000000010010 (c-2, 16 bits) -18 = 11101110 (c-2, 8 bits) -18 = 1111111111101110 (c-2, 16 bits) 12
Representação em Complemento de Dois Negação Para representação s-m, basta inverter o valor do bit de sinal Para a representação em complemento de dois: Toma-se o complemento booleano de cada bit do número Adiciona-se 1 ao resultado 13
Representação em Complemento de Dois Exemplos: +18 = 00010010 (c-2) Complemento booleano = 11101101 +1 11101110 = -18-18 = 11101110 (c-2) Complemento booleano = 00010001 +1 00010010 = +18 14
Representação em Complemento de Dois Casos especiais de negação 0 = 00000000 (c-2) Complemento booleano = 11111111 +1 100000000 = 0 Bit vai um (carry in) - é ignorado 15
Representação em Complemento de Dois Casos especiais de negação (cont.) -128 = 10000000 (c-2) Complemento booleano = 01111111 +1 10000000 = -128 Anomalia se deve ao fato que uma palavra de n bits pode conter 2 n representações distintas 2 n é um número par Sendo representados números positivos, negativos e o 0, a qtde de números positivos e negativos são 16 diferentes
Representação em Complemento de Dois Adição 1001 +0101 1110 (a) (-7) + (+5) = -2 0011 +0100 0111 (c) (+3) + (+4) = +7 0101 +0100 1001 (e) (+5) + (+4) = +9 (overflow) 1100 +0100 10000 (b) (-4) + (+4) = 0 1100 +1111 11011 (d) (-4) + (-1) = -5 1001 +1010 10011 (f) (-7) + (-6) = -13 (overflow) 17
Representação em Complemento de Dois Subtração 0010 +1001 1011 (a) M = 2 = 0010 S = 7 = 0111 -S = -7 = 1001 (+2) + (-7) = -5 1011 +1110 11001 (c) M = -5 = 1011 S = 2 = 0010 -S = -2 = 1110 (-5) + (-2) = -7 0111 +0111 1110 (e) M = 7 S = -7 = 1001 -S = 7 = 0111 (+7) + (+7) = 14 (overflow) 0101 +1110 10011 (b) M = 5 = 0101 S = 2 = 0010 -S = -2 = 1110 (+5) + (-2) = +3 0101 +0010 0111 (d) M = 5 = 0101 S = -2 = 1110 -S = 2 = 0010 (+5) + (+2) = +7 1010 +1100 10110 (f) M = -6 = 1010 S = 4 = 0100 -S = -4 = 1100 (-6) + (-4) = -10 (overflow) 18
Representação de Ponto Flutuante Usada para representar números muito grandes ou muito pequenos Para números decimais, usa-se a notação científica 976.000.000.000.000 = 9,76 x 10 14 0,0000000000000976 = 9,76 x 10-14 Para números binários, temos: M B E Expoente Sinal Mantissa 19
Representação de Ponto Flutuante Um mesmo número pode ser várias representações em ponto flutuante 24 = 0,110 x 2 5 = 110 x 2 2 = 0,0110 x 2 6 Para simplificar as operações, é requerido que os números sejam normalizados,1 b b b... 2 0 0 1 2 b n E implícito Dígitos binários 20
Representação de Ponto Flutuante Sinal da mantissa 8 bits Expoente polarizado 32 bits 23 bits Mantissa o sinal é armazenado no primeiro bit da palavra o primeiro bit da mantissa verdadeira é sempre 1 - por isso não precisa ser armazenado o valor 127 é adicionado ao expoente verdadeiro, sendo o resultado denominado Expoente Polarizado Exemplos: 856.064 = 0,11010001 x 2 10100 = 0 10010011 10100010000000000000000-856.064 = -0,11010001 x 2 10100 = 1 10010011 10100010000000000000000 209 x 2-28 = 0,11010001 x 2-10100 = 0 01101011 10100010000000000000000-209 x 2-28 = -0,11010001 x 2-10100 = 1 01101011 10100010000000000000000 21
Representação de Ponto Flutuante Intervalos de representação para 32 bits: Números negativos: [-(1-2 -24 ) x 2 128, -0,5 x 2-127 ] -(1-2 -24 ) x 2 128 = 1 11111111 11111111111111111111111-0,5 x 2-127 = 1 00000000 00000000000000000000000 Números positivos: [0,5 x 2-127, (1-2 -24 ) x 2 128 ] 0,5 x 2-127 = 0 00000000 00000000000000000000000 (1-2 -24 ) x 2 128 = 0 11111111 11111111111111111111111 22
Representação de Ponto Flutuante Overflow em Números Negativos Overflow em Números Positivos Números inteiros representáveis -2 31 0 2 31-1 Underflow em Números Negativos Underflow em Números Positivos Overflow em Números Negativos Overflow em Números Positivos Números negativos representáveis Números positivos representáveis -(1-2 -24 ) x 2 128-0,5 x 2-127 0-0,5 x 2-127 -(1-2 -24 ) x 2 128 23
Representação de Ponto Flutuante O underflow é menos crítico que o overflow, pois o valor pode ser aproximado para 0 Não há, à princípio, representação para 0 Na verdade, há um padrão de bits especial para representação do 0 O número máximo de valores distintos representáveis continua sendo 2 32 A representação em ponto flutuante apenas divide esses valores em duas faixas 24
Representação de Ponto Flutuante Há uma relação estreita entre os tamanhos dos campos reservados à mantissa e ao expoente Para um tamanho fixo de palavra: Se o número de bits reservados à mantissa aumentar, aumenta-se a precisão, mas diminui-se a faixa de valores representáveis Se o número de bits reservados ao expoente aumentar, aumenta-se a faixa de valores representáveis, mas diminui-se a precisão 25
Representação de Ponto Flutuante Padrão IEEE 754 8 bits 23 bits Formato Simples Expoente polarizado Mantissa Sinal da mantissa 11 bits 32 bits 52 bits Formato Duplo Expoente polarizado Mantissa Sinal da mantissa 64 bits 26
Representação de Ponto Flutuante Valores especiais definidos no IEEE 754 Sinal Expoente Polarizado Formato Simples Formato Duplo Mantissa 0 0 0 0 0 Valor 1 0 0 0-0 0 255 2047 0 1 255 2047 0-0 ou 1 255 2047 0 NaN 27
Representação de Ponto Flutuante Parâmetros do formato IEEE 754 Parâmetro Formato Simples Formato Duplo Tamanho da palavra 32 64 Tamanho do expoente 8 11 Polarização do expoente 127 1023 Expoente máximo 127 1023 Expoente mínimo -126-1022 Tamanho da mantissa 23 52 Número de expoentes 254 2046 Número de mantissas 2 23 2 52 Número de valores 1,98 x 2 31 1,99 x 2 63 28