Representação dos números inteiros e reais

Faça uma pergunta

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).

Última modificação: 3 de julho de 2017 às 13:51 por Pedro.CCM.

Este documento, intitulado '', 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 (https://br.ccm.net/) ao utilizar este artigo.

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
Die Zeichencodierung
Die Zeichencodierung
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

Codificação QP
Codificação Uuencode