Representação dos números inteiros e reais

Dezembro 2016

Representação de um número num computador


Chama-se representação (ou codificação) de um número à maneira segundo a qual é descrito sob forma binária. A representação dos números num computador é indispensável para que este o possa armazenar e manipular. Contudo, o problema é que um número matemático pode ser infinito (tão grande quanto quisermos), mas a representação de um número num computador deve ser feita num número de bits predefinido. Trata-se por conseguinte de predefinir um número de bits e a maneira de os utilizar de modo que estes sirvam o mais eficazmente possível para representar a entidade. Assim, seria estúpido codificar um caracter em 16 bits (65536 possibilidades) enquanto que se utiliza geralmente menos de 256...

Representação de um inteiro natural


Um número inteiro natural é um inteiro positivo ou nulo. A escolha a fazer (quer dizer o número de bits a utilizar) depende do intervalo de números que se deseja utilizar. Para codificar números inteiros naturais compreendidos entre 0 e 255, serão suficientes 8 bits (um octet) porque 28=256. Geralmente, uma codificação em n bits poderá permitir representar números inteiros naturais compreendidos entre 0 e 2n-1


Para representar um número inteiro natural após ter definido o número de bits sobre o qual o codificamos, basta arrumar cada bit na célula binária que corresponde ao seu peso binário da direita para a esquerda, seguidamente "preenchemos" os bits não utilizados por zeros.

Representação de um inteiro relativo


Um inteiro relativo é um número inteiro que pode ser negativo. É necessário por conseguinte codificar o número de modo a que se possa saber se se trata de um número positivo ou de um número negativo, e é necessário também que as regras de adição sejam conservadas. O truque consiste em utilizar uma codificação que se chama complemento a dois.

  • um inteiro relativo positivo ou nulo será representado em binária (base 2) como um inteiro natural, com a única diferença que o bit de peso forte (o bit situado à extrema esquerda) representa o sinal. É necessário por conseguinte assegurar-se, para um inteiro positivo ou nulo que ele está a zero (o 0 corresponde a um sinal positivo, 1 a um sinal negativo). Assim se codificamos um inteiro natural em 4 bits, o maior número será 0111 (quer dizer, 7 em base decimal).

Geralmente, o maior inteiro relativo positivo codificada em n bits será 2n-1-1.
  • um inteiro relativo negativo graças à codificação em complemento a dois.

Princípio do complemento a dois:
Para representar um número negativo.


*
    • Tomemos o seu oposto (o seu equivalente positivo)
    • Representemo-lo em base 2 sobre n-1 bits
    • Complementamos cada bit (invertemos, quer dizer que se substituem os zeros pelo 1 e vice-versa)
    • Acrescenta-se 1

Observará que acrescentando o número e o seu complemento a dois obtem-se 0...
Vejamos agora um exemplo:
Deseja codificar o valor -5 em 8 bits. Basta:
  • escrever 5 em binário: 00000101
  • complementar a 1: 11111010
  • acrescentar 1 : 11111011
  • a representação binária de -5 em 8 bits é 11111011

Observações :
O bit de peso forte é 1, tem-se por isso efectivamente um número negativo.
Se se acrescentar 5 e -5 (00000101 e 11111011) obtém-se 0 (com uma retenção de 1...).

Representação de um número real


Se se trata de representar um número binário com vírgula (por exemplo 101,01 que não se lê cento e um vírgula zero um dado que é um número binário, mas 5,25 em decimal) sob a forma 1,XXXXX... * 2n (quer dizer no nosso exemplo 1,0101*22). A norma IEEE define a maneira de codificar um número real.
Esta norma propõe codificar o número em 32 bits e define três componente:

  • o sinal é representado por por um só bit, pelo bit de peso forte (o mais à esquerda)
  • o expoente é codificado nao 8 bits consecutivos ao sinal
  • a mantissa (os bits situados após a vírgula) nos 23 bits restantes



Assim, a codificação faz-se sob a forma seguinte:
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm

  • o s representa o bit relativo ao sinal
  • os e representam os bits relativos ao expoente
  • os m representam os bits relativos à mantissa


Certas condições devem contudo respeitar-se para os expoentes:

  • o expoente 00000000 é proibido
  • o expoente 11111111 é proibido. Serve contudo para assinalar erros, chama-se então a esta configuração do número NaN, que significa Not a number
  • É necessário acrescentar 127 (01111111) ao expoente para uma conversão de decimal para um número real binário. Os expoentes podem assim ir de -254 à 255



A fórmula de expressão dos números reais é assim a seguinte :

(-1)^S * 2^( E - 127 ) * ( 1 + F )



onde :

  • S é o bit de sinal e compreende-se então porque 0 é positivo (-1^0=1).
  • E é o expoente ao qual se deve acrescentar 127 para obter o seu equivalente codificado.
  • F é a parte fraccionária, a única que se exprime que é acrescentada a 1 para efectuar o cálculo.



Vejamos esta codificação num exemplo:
Codificar o valor 525,5.

  • 525,5 é positivo por conseguinte o bit será 0.
  • A sua representação numa base 2 é a seguinte: 1000001101,1
  • Normalizando, encontra-se : 1,0000011011*2^9
  • Acrescenta-se 127 ao expoente que vale 9 o que dá 136, quer dizer em base 2: 10001000
  • A mantissa é composta pela parte decimal de 525,5 em base 2 normalizada, quer dizer 0000011011.
  • Como a mantissa deve ocupar 23 bits, é necessário acrescentar zeros para a completar:

00000110110000000000000
  • A representação do número 525,5 binário com a norma IEEE é por conseguinte:

0 1000 1000 00000110110000000000000
0100 0100 0000 0011 0110 0000 0000 0000 (4403600 hexadecimal)


Eis outro exemplo com um real negativo:
Codificar o valor -0,625.

  • O bit s vale 1 porque 0,625 é negativa
  • 0,625 escreve-se em base 2 da maneira seguinte: 0,101
  • Desejamos escrevê-lo sob a forma 1.01 x 2-1
  • Por conseguinte o expoente vale 1111110 porque 127 - 1 = 126 (quer dizer 1111110 em binário)
  • a mantissa é 01000000000000000000000 (só os números após a vírgula são representados, o número inteiro sendo sempre igual a 1)
  • A representação do número 0,625 binário com a norma IEEE é:

1 1111 1110 01000000000000000000000
1111 1111 0010 0000 0000 0000 0000 0000 (FF 20 00 00 hexadecimal)

Veja também


Representation of real numbers and integers
Representation of real numbers and integers
Representación de números reales y números enteros
Representación de números reales y números enteros
Darstellung von ganzen und reellen Zahlen
Darstellung von ganzen und reellen Zahlen
Représentation des nombres entiers et réels
Représentation des nombres entiers et réels
Rappresentazione dei numeri interi e reali
Rappresentazione dei numeri interi e reali
Última modificação: 12 de novembro de 2012 às 07:07 por Jeff.
Este documento, intitulado 'Representação dos números inteiros e reais', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.