Codificação BCD |
Topo Anterior Próximo |
A Codificação BCD (Binary-Coded Decimal ou Decimal Codificado em Binário) foi originalmente concebida para contornar limitações quanto ao número máximo de dígitos passíveis de serem representados nos formatos mais tradicionais de armazenamento de valores. Formatos como a representação de números reais em ponto flutuante mostram-se normalmente aceitáveis para cálculos matemáticos e científicos. Porém, erros de aproximação causados pela existência de algarismos que não possam ser representados por problemas de overflow ou underflow podem não ser admissíveis em certas aplicações, como em procedimentos financeiros. Para superar este tipo de limitação, foi desenvolvida a codificação BCD, que permite a representação de números até o último algarismo. Nessa representação, cada algarismo decimal é representado isoladamente em formato binário, sem limitações no que se refere ao número de algarismos. A tabela a seguir mostra os algarismos decimais e seus valores correspondentes em BCD (valores em binário). Algarismos decimais em codificação BCD
A fim de melhorar a eficiência desta codificação, é comum representar-se dois algarismos por byte. Note que, na tabela acima, cada dígito decimal requer apenas quatro bits, ou meio byte, para a sua representação. Tal representação com dois dígitos em cada byte é chamada de BCD Comprimido (Packed BCD), e é a representação utilizada por este Driver, ou seja, os pacotes enviados por este Driver com valores BCD utilizam um byte de dados para cada dois algarismos do valor decimal representado. Por isto o campo Size, no caso de tipos de dados BCD, deve ser definido como a metade do número máximo de algarismos representados nos valores a serem lidos ou escritos.
ExemploComo exemplo, suponha que se pretenda enviar o valor 84 em decimal (0x54 em formato hexadecimal), usando a codificação BCD comprimido em um byte, o formato usado por este Driver. O primeiro passo é separar os dois dígitos decimais que compõem o valor em sua representação decimal: ·Dígito 1: 8 ·Dígito 2: 4
Se fossemos enviar o valor ao equipamento sem a codificação BCD, o valor enviado ao protocolo seria o próprio valor 84, que seria representado em formato hexadecimal pelo valor 0x54, ou ainda 01010100b em formato binário. Usando o formato BCD comprimido, entretanto, representaremos os dois dígitos decimais separadamente em cada metade, ou nibble, do byte a ser enviado: ·BCD: 0x84 ou 10000100b
Note que, se interpretássemos por engano este valor 0x84 em formato BCD como um valor em formato hexadecimal sem esta codificação, e este valor fosse convertido para decimal, obteríamos o valor 132, sem significado algum. A tabela a seguir apresenta mais alguns exemplos de valores decimais entre 0 (zero) e 99 e suas respectivas representações no formato BCD Comprimido em um byte, apresentados nos formatos hexadecimal e binário. Algarismos decimais em codificação BCD Comprimido
|