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 40:
* Descobrir o inverso de um número também é simples. Basta invertermos todos os bits e, em seguida, somarmos 1. Sempre funciona.
* O "0" é sempre "0". Não existe uma versão negativa ou positiva deste número.
 
Por meio desta notação, números tão pequenos como -4.294.967.296 e tão grandes como 4.294.967.295 podem ser representados.
 
== Números Reais ==
 
Por fim, também é muito útil que computadores possam representar números reais. Vamos estudar agora como eles costumam ser representados em computadores.
 
A forma mais lógica e versátil de representarmos um número real é por meio da notação científica. Um número decimal em notação científica sempre toma a seguinte forma:
 
<math>N * 10^{M}</math>
 
onde N é sempre um número real maior ou igual à 1 e menor que 10 que pode ser positivo ou negativo enquanto M é um número inteiro qualquer (que pode ser positivo ou negativo). Por exemplo:
 
<math>3,15756 * 10^{9}</math> representa aproximadamente quantos segundos existe em um século enquanto
 
<math>1,00000 * 10^{-9}</math> representa quantos segundos existem em um nanossegundo.
 
Alternativamente, podemos representar também números em notação científica utilizando uma base binária:
 
<math>1,00000 * 10^{-1}</math>. Lembre-se que aquele "10" significa na verdadee "2" em representação decimal. Ou seja, o número representado é na verdade 0,5 e não 0,1.
 
Enfim, quando temos um número em notação científica binária, ele sempre tem a seguinte forma:
 
<math>S * 1,XXXXX * 10^{YYYYY}</math> , onde "S" representa o sinal (que pode ser positivo ou negativo), "XXXXX" são a parte fracionária do número e "YYYYYY" representa o expoente.
 
Então, para representarmos números reais, precisamos representar no espaço de 32 bits os valores do sinal, fração e expoente. No MIPS, isso é feito da seguinte forma:
 
S -- E E E E E E E E -- F F F F F F F F F F F F F F F F F F F F F F F
 
O Sinal é representado em um único bit (1 para negativo e 0 para positivo), o expoente é representado por 8 bits e a fração é representada por 23 bits. Assim, o exemplo <math>1,00000 * 10^{-1}</math> (ou 1/2 em decimal) é representado:
 
0 -- 1 1 1 1 1 1 1 1 -- 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 
Com esta representação, números quase tão pequenos como <math>-2^{38}</math> ou quase tão grandes como <math>2^{38}</math> podem ser armazenados.
 
Entretanto, note que a nossa precisão não é perfeita. Existem muitos números que não podem ser representados desta forma. Por isso, sempre é preciso realizar arredondamentos. E quanto mais operações realizamos, mais erros acabam sendo acumulados. Por essa razão, a maioria dos computadores possui também uma forma mais precisa de representação de números reais. Essa forma normalmente ocupa o dobro do espaço do que costuma ocupar. No MIPS uma representação desti tipo ocupa 64 bits. Ela funciona da seguinte forma:
 
S -- E E E E E E E E E E E -- F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F F
 
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.
 
 
[[Categoria: Ciência da Computação]]