Introdução à Arquitetura de Computadores/Representação Numérica: diferenças entre revisões
[edição não verificada] | [edição não verificada] |
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição |
Sem resumo de edição |
||
Linha 81:
Apesar de gastarmos o dobro do espaço de armazenamento desta forma, aumentamos consideravelmente a faixa de valores representados e a precisão com a qual podemos representá-los.
== Overflow e Underflow ==
'''Overflow''' é o nome do resultado incorreto ao qual chegamos quando tentamos somar números grandes demais e o resultado não pode ser armazenado e nem representado em 32 bits. Ele pode ocorrer quando efetuamos as seguintes operações:
* Somamos dois números positivos
* Somamos dois números negativos
* Subtraímos um número negativo de um positivo.
É de responsabilidade do ''hardware'' sempre verificar se ocorreu um ''overflow'' nestes casos. Normalmente, para fazer a verificação basta conferir os sinais dos números. Em caso afirmativo, ele deve ativar um sinal de exceção. O que é feito caso uma excessão seja detectada depende de cada programa.
O MIPS, por exemplo, sempre armazena o endeereço da última instrução que gerou excessão em um registrador especial chamado EPC. A instrução '''mfc0''' (''Move from System Control'') é usada para copiar este endereço para um registrador de propósito geral que pode ser conferido por algum programa. Cabe ao programador deste programa decidir o que fazer.
Em lingüagens de alto nível, o comportamento depende da lingüagem usada. C, por exemplo, ignora todos os Overflows. Ao contrário de Fortran ou Ada que requerem que o programa sempre seja avisado.
[[Categoria: Ciência da Computação]]
|