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]]