Simplificando O Sistema Binário
Published: 2024-05-21 02:01:54

Olá a todos, todos já ouvimos falar sobre números binários, e quero trazer uma luz sobre isso, mas antes de entrarmos no que é o número binário, vou trazer explicações para facilitar o entendimento de como utilizamos os números binários e o que eles são.

## Origem dos Números Binários
Os números binários foram formalizados pelo filósofo alemão Gottfried Wilhelm Leibniz, que buscava uma forma mais simplificada de representar conceitos matemáticos. Embora o sistema binário tenha sido formalizado no século XVIII pelo Leibniz, foi apenas no século XX que ele evoluiu significativamente. O cientista Claude Shannon, em sua tese de mestrado de 1937, demonstrou como a lógica booleana poderia ser aplicada a circuitos elétricos e lógicos, usando o sistema binário para representar estados de "ligado" (1) e "desligado" (0).

## Notação Unária

Para explicar como isso funciona, vamos falar sobre uma notação chamada Notação Unária. Ela tem um conceito diferente do binário, mas ajuda a entender a representação numérica. A notação Unária usa apenas um operador, que é 1.
Exemplo de notação unária:

- 1 (Notação Unária) = 1 (decimal)
- 11 (Notação Unária) = 2 (decimal)
- 111 (Notação Unária) = 3 (decimal)
- 1111 (Notação Unária) = 4 (decimal)

## Notação Binária

Agora, entendendo como a notação Unária representa números decimais, vamos ver como fazemos isso com números binários.
Exemplos de números binários:

- 1 (binário) = 1 (decimal)
- 10 (binário) = 2 (decimal)
- 11 (binário) = 3 (decimal)
- 100 (binário) = 4 (decimal)

Os números binários podem parecer confusos inicialmente, mas quero mostrar como é fácil entendê-los. Começando pelo primeiro bit (dígito binário), que é 1, entendemos que, para representar o número 1 em base 10 (decimal), primeiro precisamos preencher o 0 "desligado" para 1 "ligado".

## Complexidade dos Números Binários

A complexidade inicial dos binários surge quando esgotamos todos os zeros disponíveis. Quando isso acontece, precisamos adicionar mais uma casa na memória. Por exemplo, sempre que precisamos alocar mais espaço, desligamos todos os bits à direita e acendemos apenas um bit à esquerda. Por exemplo:

- 11 (binário) = 3 (decimal)
- 100 (binário) = 4 (decimal)
- 111 (binário) = 7 (decimal)
- 1000 (binário) = 8 (decimal)

Entender isso é importante, pois você nunca irá alocar mais espaço, como 101 ou 110 sem antes ter ligado todos os bit anteriores.

## Representação de Letras com ASCII

O ASCII (American Standard Code for Information Interchange) é um padrão de codificação que surgiu inicialmente que utiliza 8 bits para representar caracteres do alfabeto americano. Cada letra do alfabeto é representada por um número decimal que está ligado a uma quantidade específica de bit. Por exemplo, o alfabeto começa a ser representado pelo número decimal 65 com a letra A, que em binário é 01000001.

Essa é uma tabela mostrando melhor essas informações:

![ascii table](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdtge49sdv05t8gjkj7i.jpg)

Exemplo: "Hello World" em ASCII binário:
`"Hello World" = 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100`

## Limitações do ASCII e o Unicode

O problema do ASCII é que ele é limitado a 1 byte, o que é insuficiente para representar todos os caracteres de alfabetos complexos, como o chinês, grego ou russo. Para resolver isso, foi criado o Unicode que tem em sua base o ASCII Extended, que pode utilizar 16, 24, 32 bits para representar um caractere, permitindo a codificação de mais de 4 bilhões de caracteres diferentes.

O Unicode também permite a representação de emojis. Por exemplo, o emoji de risada 😂 tem a representação Unicode U+1F602.

Inclusive para sabermos quanto caracteres queremos utilizar em quesito de alocar espaço em bytes, é onde surge o UTF(Unicode Transformation Format) com as variações como UTF-8, UTF-16 e UTF-32 que vemos muito em bancos de dados ou programando em alguma linguagem que faz uso de especificar eles quando necessário, são através deles que sabemos como o Unicode são representados e armazenado bytes na memória do computador ou em arquivos.

Não vou entrar em detalhe sobre a explicação de cada letra e número que pode ou não significar no Unicode mas uma breve explicação é que o "1F602" desse emoji é uma representação em hexadecimal.
Eu queria abordar muito mais sobre tudo o que foi falado, mas números binários até no que eu disse dava para ser mais detalhado, mas seria cansativo a leitura e muito mais técnica, isso por sí só já deve te dar uma boa margem para começar entender números binários e como eles impactam tanto todo o nosso desenvolvimento.

Com isso finalizo esse artigo sobre o que são os binários e como eles estão ligado a tudo quando se trata do nosso sistema.