# Codificação binária decimal

A codificação binária decimal e/ou codificação binária, também conhecida como BCD (Binary-coded decimal), é um sistema de numeração muito utilizado na Informática, assim como na Matemática, e em sistemas digitais eletrônicos. Estamos falando de um sistema de base dois e posicional, ou seja, trocando a ordem dos dígitos no número binário, o seu valor é alterado. Nele, é utilizado apenas dois algarismos: o 0 (zero) e o 1 (um). O BCD codifica o sistema decimal em binário, do números (decimais) 0 a 9, onde cada número é representado pelo seu equivalente binário.

## História

As primeiras civilizações sempre se preocuparam em criar um sistema de numeração simples para realizar operações básicas da Matemática em fatos cotidianos. As origens do Sistema binário são desconhecidas, porém existem relatos de que por volta de 3000 a.C. a China já utilizava esse sistema para contagens, somatórias, entre outras operações básicas da Matemática. Porém, o Sistema Binário só passou a ser novamente levantado em pauta 46 séculos depois com o cientista e engenheiro alemão Gottfried Wilhelm Leibniz, que além de defender esse Sistema de Numeração, aperfeiçoou e formalizou diversas combinações binárias para a representação de novos números, auxiliando posteriormente, as primeiras Linguagens de Programação. Mais de um século depois, George Boole retomou os estudos de Leibniz, aperfeiçoando alguns conceitos e introduzindo o Sistema Binário em Sistemas Digitais. Mais tarde ainda, George Boole desenvolveria a Álgebra Booleana, fundamental em diversas áreas da Computação.

## Definição

O sistema binário é composto por dois algarismos fundamentais: o 0 (zero) e o 1 (um), onde suas posições indicam o valor expresso. Diferentemente da base decimal, os números no Sistema Binário são lidos inversamente, ou seja, da direita para esquerda, onde cada dígito recebe o nome de bit (Binary Digit), já um byte é composto por oito bits (uma sequência binária de oito dígitos) e a partir de então segue: 1 KB (1024 bytes), 1MB (1024 KB), e assim sucessivamente. A tabela a seguir ilustra algumas conversões do Sistema Binário para o Sistema Decimal.
| Sistema Decimal | Sistema Binário |
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 10 | 1010 |
| 100 | 1100100 |
| 1000 | 1111101000 |
E assim segue uma sequência linear de posições, onde cada combinação da posição dos bits inflige na formação de um novo algarismo.

## Conversões

A conversão para outras bases é fundamental no Sistema Binário. Em algumas calculadoras, ao iniciar uma operação matemática, por exemplo, ocorre uma conversão dos algarismos decimais, informados pelo usuário, para a base binária antes da execução da operação matemática, e, após executar a operação matemática, há uma nova conversão para base decimal para exibir o resultado. No sistema binário, a posição de um bit é fundamental na conversão para outra base. O primeiro bit a direita (o último no sistema decimal) corresponde à posição 0 (zero), o segundo bit a direita à posição 1 (um) e assim sucessivamente. Exemplo:
Nesse exemplo, lendo da esquerda para direita, o 1 (um) “ocupa” a posição 3, o primeiro 0 (zero) a posição 2, o segundo 0 (zero) a posição 1 e o último 0 (zero) a posição 0.
Além da necessidade funcional, o processo de conversão entre uma base e outra é fundamental para o uso da informação, pois no Sistema de numeração binário, a partir de certo valor, passamos a ter muitas posições, o que torna cálculo e a leitura dos números cada vez mais complexos. As conversões mais comuns são de binário para as bases: octal, decimal e hexadecimal.

### Binário - Octal

A conversão de binário para Octal utiliza o seguinte processo:
1 - Agrupa-se o número binário em 3 bits:
10101001 → 10 - 101 - 001
2 - Soma-se os produtos, da base 2(dois) elevado à posição equivalente:
* a) 10 = [(1 x 2$^1$) + (0 x 2$^0$)] = (2 + 0) = 2
* b) 101 = [(1 x 2$^2$) + (0 x 2$^1$) + (1 x 2$^0$)] = (4 + 0 + 1) = 5
* c) 001 = [(0 x 2$^2$) + (0 x 2$^1$) + (1 x 2$^0$)] = (0 + 0 + 1) = 1
3 - Junta-se as somas:
A seguir, junta-se as somas da primeira operação realizada até a última, no caso citado(2, 5, 1), formando o algarismo 251 na base octal.
A operação inversa segue os seguintes passos:
1 – Separa os algarismos do número na base Octal:
251 → 2 - 5 - 1
2 – Converte-se cada um desses algarismos para seu respectivo número binário de 3 bits:
* a) 2 =010
* b) 5 = 101
* c) 1 = 001
3 - Junta-se as somas:
A seguir, junta-se as somas da primeira operação realizada até a última, no caso citado(010, 101, 001), formando o algarismo 010101001 ou simplesmente 10101001 na base binária.

### Binário - Decimal

A conversão de binário para Decimal utiliza o seguinte processo:
1 - Separa-se cada bit do número binário:
1010 → 1 - 0 - 1 - 0
2 - Somam-se os produtos da base dois elevados a respectiva posição:
* a) 0 x 2$^0$ = 0
* b) 1 x 2$^1$ = 2
* c) 0 x 2$^2$ = 0
* d) 1 x 2$^3$ = 8
3 - Soma-se os resultados obtidos:
Como trata-se de uma soma, tanto faz a sequencia dos resultados(0, 2, 0, 8), logo 0 + 2 + 0 + 8, que corresponde a 10 no sistema decimal.
A operação inversa segue os seguintes passos:
1 - Dividimos o algarismo na base decimal por 2, até o seu resto ser igual a 1 e seu quociente ser igual a zero.
${\frac {23}{2}}$ = 11 - Resto = 1
${\frac {11}{2}}$ = 5 - Resto = 1
${\frac {5}{2}}$ = 2 - Resto = 1
${\frac {2}{2}}$ = 1 - Resto = 0
${\frac {1}{2}}$ = 0 - Resto = 1
2 - Junta-se os restos da última divisão até a primeira:
Nesse caso, (1, 0, 1, 1, 1), formam o algarismo 10111 da base binária que corresponde ao algarismo 23 da base decimal.

### Binário - Hexadecimal

A conversão de binário para hexadecimal utiliza o seguinte processo:
1 - Agrupa-se o número binário em 4 bits:
10101001 → 1010 - 1001
2 - Soma-se os produtos, da base 2(dois) elevado à posição equivalente:
* a) 1010 = [(1 x 2$^3$) + (0 x 2$^2$) + (1 x 2$^1$) + (0 x 2$^0$)] = (8 + 0 + 2 + 0) = 10 = A
* b) 1001 = [(1 x 2$^3$) + (0 x 2$^2$) + (0 x 2$^1$) + (1 x 2$^0$)] = (8 + 0 + 0 + 1) = 9
3 - Junta-se as somas:
A seguir, junta-se as somas da primeira operação realizada até a última, no caso citado(A, 9), formando o algarismo A9 na base hexadecimal.
A operação inversa segue os seguintes passos:
1 – Separa os algarismos do número na base hexadecimal:
C13 → C - 1 - 3
2 – Converte-se cada um desses algarismos para seu respectivo número binário de 4 bits:
* a) C = 12 = 1100
* b) 1 = 0001
* c) 3 = 0011
3 - Junta-se as somas:
A seguir, junta-se as somas da primeira operação realizada até a última, no caso citado(1100, 0001, 0011), formando o algarismo 110000010011 na base binária.