O documento descreve a representação de números decimais em binário usando codificação BCD (Binary Coded Decimal). A BCD representa cada algarismo decimal separadamente usando 4 bits por dígito para preservar precisão. Dois dígitos BCD podem ser armazenados em um byte de forma compactada. A aritmética BCD funciona da mesma forma que a decimal.
1. REPRESENTAÇÃO DE DADOS
REPRESENTAÇÃO DE NÚMEROS DECIMAIS CODIFICADOS EM BINÁRIO
A representação de números reais em ponto flutuante é perfeitamente adequada para fazer
cálculos matemáticos, científicos, etc. No entanto, nessa representação podemos ter perda
de precisão do número representado ou mesmo haverá números que não podem ser
representados por overflow (excedem o número de bits do expoente). Quando estamos
representando números em que é necessário manter precisão até o último algarismo, tal
como nos cálculos usados em procedimentos financeiros (o seu saldo no banco, por
exemplo) não é admissível erro por aproximação.
Para resolver essa restrição, foi desenvolvida uma outra representação: BCD ou Binary
Coded Decimal (ou seja, Decimal Representado em Binário). A idéia do BCD é
representar, em binário, cada algarismo de per si, de forma a que o número original seja
integralmente preservado. A codificação BCD não possui extensão fixa, possibilitando
representar números com precisão variável - quanto maior o número de bits, maior será a
precisão. O microprocessador Intel 8080 suporta instruções de aritmética em BCD (p.ex.:
instrução DAA).
TABELA DE REPRESENTAÇÃO DOS NÚMEROS DECIMAIS EM BCD
DECIMAL BCD DECIMAL BCD
0 0000 8 1000
1 0001 9 1001
2 0010 inválido 1010
3 0011 inválido 1011
4 0100 inválido 1100
5 0101 inválido 1101
6 0110 inválido 1110
7 0111 inválido 1111
Assim, o número 148 seria representado em BCD como:
1 = 00012
4 = 01002 e
8 = 10002, logo:
148 = 000101001000 (BCD).
Exemplo 1: representação do número 14958 em BCD:
número
1 4 9 5 8
decimal
xxxx0001 xxxx0100 xxxx1001 xxxx0101 xxxx1000 representação
2. BCD
a+4 a+3 a+2 a+1 a endereço
A codificação de um dígito em BCD requer 4 bits. Como a utilização de apenas 4 bits por
byte não é eficiente, normalmente são armazenados 2 dígitos BCD em um só byte. Esta
representação é chamada BCD comprimido ("packed BCD"). Podemos constatar que
ainda assim há um desperdício de códigos; como BCD usa 4 bits (logo, haveria 16
representações possíveis) para representar 10 algarismos, 6 códigos não são utilizados.
Portanto, essa representação é menos eficiente em relação à utilização dos recursos do
computador que a representação em ponto flutuante.
Exemplo 2: representação do número 14958 em BCD comprimido:
1 49 58 número decimal
representação BCD
xxxx1001 01001001 01011000
comprimido
a+2 a+1 a endereço
Os algoritmos da aritmética em BCD são os mesmos que os correspondentes à aritmética
em decimal, à qual sempre estivemos acostumados. Por exemplo, na soma em BCD,
soma-se os algarismos individualmente, em decimal; quando a soma ultrapassa dez, "vai
um" para o dígito de maior ordem (a próxima "casa"), e assim por diante.
Exemplo.:
DECI MAL B CD
25 0010 0101
+3 8 +0011 1000
5 13 0101 1101
+1 10- +0001 1010-
63 0110 0011
[P15] [Índice] [Home-page] [Início da Página] [Seção Anterior] [Próxima Seção]
[Sistemas de Numeração] [Representação de Dados] [Componentes do Computador]
[Representação de Instruções] [Circuitos Lógicos] [Entrada e Saída] [Tópicos Avançados
de Arquitetura] [Sistemas de Arquivos] [Glossário]