Representação dos números inteiros e reais

Junho 2015

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)
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Representacao-dos-numeros-inteiros-e-reais .pdf

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
Este documento, intitulado « Representação dos números inteiros e reais »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.