Representação de um número num computador
Chama-se representação (ou codificação)
de um número a maneira segundo a qual é descrito sob forma binária.
A representação dos números sobre um computador é
indispensável de modo que este possa armazenar-o, manipular-o. Contudo
o problema é que um número matemático pode ser infinito
(também grande que ele quer), mas a representação de um
número num computador deve ser feita sobre um número de bits
predefinido. Trata-se por conseguinte de predefinir um número de bits
e a maneira de utilizar-o de modo que estes sirvam mais o o mais eficazmente
possível possível a representar a entidade. Assim seria idiot
codificar um caráter das 16 bits (65536 possibilidades) enquanto
que utiliza-se menos geralmente de 256…
Representação de uma totalidade natural
Uma totalidade natural é uma totalidade positiva ou
nula. A escolha a fazer (quer dizer o número de bits a utilizarem)
depende do garfo dos números que deseja-se utilizar. Para codificar números
inteiros naturais compreendidos entre 0 e 255, nós será suficiente
de 8 bits (um byte) porque 28=256. Geralmente uma codificação
sobre No. 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 codifica-o-se, é suficiente
arranjar cada bit na célula binária que corresponde ao
seu peso binário da direita para a esquerda, seguidamente ele “preenche”
as bits não utilizadas por zeros. .
Representação de uma totalidade relativa
Uma totalidade relativa é uma totalidade que pode ser
negativa. É necessário por conseguinte codificar o número
de modo que pode-se saber se trat-se-ar de um número positivo ou um número
negativo, e é necessário mais que as regras de adição
sejam conservadas. Astuce consiste a utilizar uma codificação
que chama-se complemento à dois.
- uma totalidade relativa positiva ou nula será representada
binária (base 2) como uma totalidade natural, à diferença
que a bit de pesos forte (a bit situada à extrema
esquerda) representa o sinal. É necessário por conseguinte assegurar-se
para uma totalidade positiva ou nula que é à zero (0 corresponde
a um sinal positivo, 1 a um sinal negativo). Assim se codificar-se uma totalidade
natural das 4 bits, o número grande será 0111 (quer dizer
7 em base decimala).
Geralmente mais grande a totalidade relativa positiva codificada sobre n.
bits será 2n-1-1.
- uma totalidade relativa negativa graças à
codificação em complemento à dois.
Princípio do complemento à dois:
quer dizer a representar um número negativo.
- Tomam o seu oposto (o seu equivalente positivo)
- Representa-o em base 2 sobre n-1 bits
- Ele complementa cada bit (ele inverte, quer dizer que substitui-se
os zeros do 1 e vice-versa)
- Acrescenta-se 1
Observará-se que acrescentando o número e o seu complemento
à dois obtêm 0…
Vêem agora aquilo sobre um exemplo:
Deseja codificar o valor -5 das 8 bits. É suficiente:
- escrever 5 binário: 00000101
- complementar à 1: 11111010
- acrescentar 1 : 11111011
- a representação binária de -5 das 8 bits é
11111011
Remarques:
Le bit de poids fort est 1, on a donc bien un nombre négatif.
Si on ajoute 5 et -5 (00000101 et 11111011) on obtient 0 (avec une retenue de 1...).
Représentation d'un nombre réel
Trata-se de ir representar um número binário
à vírgula (por exemplo 101,01 que não se lê cem
uma vírgula zero um dado que é um número binário
mas 5,25 em casa 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-se codificar o número das 32 bits e
define três componente:
- o sinal é representado por por uma só uma bit, pela
bit de pesos forte (o mais à esquerda)
- o expositor é codificado sobre as 8 bits consecutivas ao
sinal
- a mantissa (as bits situadas após a vírgula) sobre
as 23 bits restantes
Assim a codificação faz-se sob a forma seguinte:
seeeeeeeemmmmmmmmmmmmmmmmmmmmmmm
- o s representa a bit relativa ao sinal
- os e representam as bits relativas ao expositor
- os m representam as bits relativas à mantissa
Certas condições devem contudo respeitar-se para
os expositores:
- o expositor 00000000 é proibido
- o expositor 11111111 é proibido. Serve-se-se contudo para assinalar
erros, chama-se então esta configuração do número
NaN, que significa Not a number
- É necessário acrescentar 127 (01111111) ao expositor para
uma conversão de decimal para um número real binário.
Os expositores 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 é a bit de sinal e compreende-se então porque 0
é positivo (-1^0=1).
- E é o expositor auxquel ele deve bem acrescentar 127 para obtenier
o seu equivalente codificado.
- F é a parte fracionária, a única que exprime-se e
que é acrescentadas à 1 para efetuar o cálculo.
Vêem esta codificação sobre um exemplo:
quer dizer a codificar o valor 525,5.
- 525,5 é positiva por conseguinte á bit será
0. .
- A sua representação baseia 2 é a seguinte: 1000001101,1
- Normalizando, encontra-se : 1,0000011011*2^9
- Acrescenta-se 127 ao expositor que vale 9 que dá 136, quer dizer baseia
2: 10001000
- A mantissa é composta da parte decimala de 525,5 baseia 2 normalizada,
quer dizer 0000011011.
- Como a mantissa deve ocupar 23 bits, é necessário
acrescentar zeros para completar-o:
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:
quer dizer a codificar o valor -0,625.
- A bit s vale 1 porque 0,625 é negativa
- 0,625 escreve-se em base 2 da maneira seguinte: 0,101
- Deseja-se escrever-o sob a forma 1.01 x 2-1
- Por conseguinte o expositor vale 1111110 porque 127 - 1 = 126 (quer dizer 1111110
binário)
- a mantissa é 01000000000000000000000 (único os números
após a vírgula são representados, o número inteiro
sempre iguais à 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)