Universidade Federal de Uberlândia Faculdade de Computação Representação e aritmética binária Prof. Renato Pimentel 1 Tipos de informação Representação por meio de sequências binárias: 8 bits (byte) Também pode ser 4 bits (nibble) Pode ocupar 1 ou + palavras na memória 2 Prof. Renato Pimentel 1
Tipos de informação Depende do processador Instruções Ponto fixo Informação Dados Numéricos Ponto flutuante Padrões de representação Não-numéricos 3 Dados numéricos Definidos de acordo com os seguintes fatores: Tipos de números Faixa de valores possíveis Precisão do número Custo do hardware 4 Prof. Renato Pimentel 2
Números em ponto fixo Dígitos para representar: Parte inteira Parte fracionária Peso do dígito de acordo com sua posição relativa à vírgula (Notação Posicional) 5 Números em ponto fixo: exemplo Exemplo: 1,1101 2 Parte inteira: 00000001 Parte fracionária: 11010000 00000001 11010000 Vírgulas não representadas. É função da instrução (ou processador) reconstruílo. 6 Prof. Renato Pimentel 3
Números em ponto fixo: positivo e negativo Números com sinal Bit mais à esquerda = 1: Número negativo Bit mais à esquerda = 0: Número positivo n bits: 1 para o sinal; n-1 restantes: módulo. Exemplo: 00101010 2 = 42 10101010 2 = -42 7 Prof. Renato Pimentel 4
Complemento p/ 2 Complemento p/ 2: quanto falta para 2 elevado a n (isto é, na notação binária, 1 seguido de n zeros). Cálculo do complemento para 2: Inversão dos bits (complemento para 1) Soma 1 ao valor invertido Ex.: 0100 Inversão dos bits: 0100 1011 Soma 1 ao valor invertido: (1011 + 0001 1100) (será mostrada adiante) Podemos usar complemento p/ 2 na representação de negativos (positivos mantém forma direta). 10 Prof. Renato Pimentel 5
Complemento p/ 2 Podemos usar complemento p/ 2 na representação de negativos (positivos mantém forma direta). Vantagem: existirá somente uma representação para o número zero: 000...0 É possível representar um valor negativo a mais: 11 Prof. Renato Pimentel 6
Números em ponto flutuante Número em ponto flutuante é armazenado na memória como o par Mantissa M (fração / inteiro): também chamado significando Expoente E (inteiro) A base é constante (binário 2) Precisão: número de bits de M Faixa de valores possíveis: determinada por B e E 13 Números em ponto flutuante São equivalentes: Normalização: Somente parte fracionária da mantissa é representada. Objetivo: garantir o máximo de bits possíveis da mantissa para representação do número. 14 Prof. Renato Pimentel 7
Números em ponto flutuante: padrão IEEE 754-2008 Precisão simples: Padrão IEEE 754-2008 normalizado, com expoente com excesso 127 Nome oficial: binary32 (linguagem C: float) 32 bits 31 30 23 22 0 S EXPOENTE COM EXCESSO 127 (E) MANTISSA Precisão dupla (binary64, double) 64 bits: 63 62 52 51 0 S EXPOENTE COM EXCESSO 1023 (E) MANTISSA 15 Números em ponto flutuante: exemplo Exemplo: Normalização: Sinal: 1 (número negativo) 31 30 23 22 0 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Mantissa: M = 0,1 = 1 x 2-1 + 0 x 2-2 + 0... Expoente: E - 127 = -1 E = 126 = 01111110 16 Prof. Renato Pimentel 8
Números em ponto flutuante: exemplo Exemplo: qual o número decimal correspondente? 31 30 23 22 0 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 S E = 129 M Sinal: (-1) S = -1 Negativo Mantissa: fracionária (0,1 2 0,5 10 ) Sempre somar 1, devido à normalização 17 Prof. Renato Pimentel 9
Números em ponto flutuante: valores especiais Solução: valores especiais Bits do expoente todos 1 ou todos 0, reservados para valores especiais. Ex.: E=0, M=0: Zero Fonte: Wikipedia 19 Aritmética binária - adição 1 a. parcela 2 a. parcela resultado vai-um 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Comparativo com adição decimal: 20 Prof. Renato Pimentel 10
Aritmética binária - subtração minuendo subtraendo resultado empresta-um 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Comparativo com subtração decimal: 21 Aritmética binária - subtração Alternativa: Alinhar os números (colocando 0 à esquerda para que tenham mesmo número de dígitos, se necessário) Trocar o segundo termo (subtraendo) por seu complemento para 2; Fazer a adição entre os termos Descartar primeiro dígito Exemplo: 101 11 Alinhamento: 101 011 Complemento para 2 de 011: 101 Adição: 101+101 = 1010 Descarte do primeiro dígito do resultado: 010 = 10 22 Prof. Renato Pimentel 11
Aritmética binária - multiplicação multiplicando multiplicador resultado 0 0 0 0 1 0 1 0 0 1 1 1 23 Aritmética binária - divisão dividendo divisor quociente 0 1 0 1 1 1 Fazer como no caso decimal. No cálculo do resto, regras da diferença (emprestar 1 se necessário) 110010 101 0010 0101 000 1010 24 Prof. Renato Pimentel 12