Representação dos números inteiros e reais

Novembro 2017

Representação de um número num computador

Chama-se representação ou codificação de um número a maneira como ele é descrito sob forma binária. A representação dos números num computador é indispensável para que este possa armazená-los e manipulá-los. Contudo, o problema é que um número matemático pode ser infinito (tão grande quanto quisermos), mas a sua representação em um computador deve ser feita num número de bits predefinido. Logo, é preciso predefinir um número de bits e a maneira de utilizá-los para que eles sejam usados, o mais eficazmente possível, para representar um número ou outro símbolo qualquer. Assim, é desnecessário codificar um caractere em 16 bits (65.536 possibilidades) quando, geralmente, utilizamos menos de 256.

Representação de um inteiro natural

Um número inteiro natural é um inteiro positivo ou nulo. A escolha a ser feita (isto é, o número de bits a serem utilizados) depende do intervalo de números que se quer usar. Para codificar números inteiros naturais compreendidos entre 0 e 255, serão suficientes 8 bits (um byte) porque 28 =256. De um modo geral, uma codificação em n bits poderia 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 no qual o codificamos, basta arrumar cada bit na célula binária correspondente ao seu peso binário da direita para a esquerda e, em seguida, 'preencher' os bits não utilizados com zeros.

Representação de um inteiro relativo

Um inteiro relativo é um número inteiro que pode ser negativo. Assim sendo, é preciso codificar o número de modo a que se possa saber se se trata de um número positivo ou negativo, e é preciso, 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 mais à esquerda) passa a representar o sinal. Por conseguinte, é preciso verificar, para um inteiro positivo ou nulo, se ele está em zero (sinal positivo) ou um (sinal negativo). Assim, se codificarmos um inteiro natural em 4 bits, o maior número será 0111 (ou seja, 7 em base decimal). Normalmente, o maior inteiro relativo positivo codificado em n bits será 2n-1-1.


Para representar um número negativo, tome o seu oposto (o seu equivalente em positivo), represente-o em base 2 sobre n-1 bits, substitua os zeros por 1 e vice-versa e adicione 1 no bit mais à esquerda. Vamos observar que acrescentando o número e o seu complemento a dois obteremos 0.

Exemplo: Para codificar o valor -5 em 8 bits, basta escrever 5 em binário: 00000101, inverter as casas: 11111010, e acrescentar o 1 para trocar o sinal: 11111011. A representação binária de -5 em 8 bits, portanto, é 11111011.

Observações: o bit de peso forte é 1, por isso obtemos um número negativo. Ao acrescentarmos 5 e -5 (00000101 e 11111011) obteremos 0 (com a retenção de 1).

Representação de um número real

Trata-se 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 é o número decimal 5,25 expresso em base 2) sob a forma 1,XXXXX... * 2n (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 componentes: o sinal é representado por um só bit, ou seja, pelo bit de peso forte (o mais à esquerda), o expoente é codificado utilizando 8 bits consecutivos ao sinal e a mantissa (os bits situados após a vírgula) com os 23 bits restantes.

A codificação se faz sob esta forma: seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm, sendo que s representa o bit relativo ao sinal, cada e representa o expoente do bit e cada m representa a mantissa do bit.

Porém, há certas restrições para os expoentes: o expoente 00000000 é proibido e o expoente 11111111 é utilizado apenas para assinalar erros. Esta configuração numérica é chamada de NaN, que significa Not a number (Não é um número). É necessário adicionar 127 (01111111) ao expoente para uma conversão de decimal para um número real binário. Desta forma, os expoentes podem ir de -254 a 255

Assim, a fórmula de expressão dos números reais é
(-1)^S * 2^(E - 127) * (1 + F)
onde: S é o bit do sinal y e, por isso o 0 é entendido como positivo (-1^0=1), E é o expoente ao qual se deve adicionar 127 para obter o seu equivalente codificado e F é a parte fracionária, a única que se expressa e que é adicionada a 1 para efetuar o cálculo.

Exemplo com número real positivo: 525,5 é positivo, logo o primeiro bit será 0. A sua representação num sistema binário (base 2) é 1000001101,1 e, ao padronizá-lo, encontramos 1,0000011011*2^9. Acrescentamos 127 ao expoente que vale 9, o que dá 136, ou seja, no sistema binário (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 completá-la:
00000110110000000000000. Consequentemente, a representação do número 525,5 binário com a norma IEEE é: 0 1000 1000 000001101100000000000000100 0100 0000 0011 0110 0000 0000 0000 (4403600 em sistema hexadecimal).

Exemplo com número real negativo: -0,625 é negativo, logo o primeiro bit será 1. A sua representação no sistema binário (base 2) é 0,101. Desejamos escrevê-lo assim: 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, já que o número inteiro é sempre igual a 1).

A representação binária do número -0,625 com a norma IEEE 754 é 1 1111 1110 01000000000000000000000 1111 1111 0010 0000 0000 0000 0000 0000 (FF 20 00 00 em sistema hexadecimal).

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: 3 de julho de 2017 às 13:51 por Pedro.CCM.
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.