Explicação dos Números Binários e Hexadecimais
[Transcrição do vídeo abaixo]
Oi pessoal aqui é Daniel Scocco do canal criptos.com.br e hoje eu vou falar um pouco sobre número binários e números hexadecimais.
Por que?
Como você já deve ter ouvido falar, os computadores trabalham com números binários (bits e bytes). Já vou explicar o que é isso, sistemas eletrônicos e digitais.
E como o Bitcoin e as outras criptomoedas são moedas eletrônicas, o funcionamento delas está apoiado em sistemas binários.
Então é interessante: se você quer entender mais como funcionam as criptomoedas, então é interessante que você tenha uma noção, nem que seja superficial, do que é um número binário e do hexadecimal também, porque ele é muitas vezes usado para representar os números binários.
Bom, vamos lá.
Como você sabe, o nosso sistema de representação numérica se chama decimal porque ele tem 10 algarismos para representação dos números.
Um algarismo nada mais é do que um símbolo.
Então, como você pode ver, no sistema decimal (ou com base 10), os algarismos são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.
Num sistema binário por sua vez, como é um sistema com base 2, ele tem somente dois algarismos para representação, o 0 e o 1.
Um sistema hexadecimal (que é base 16), por sua vez, ele vai ter 16 algarismos: então o 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 e depois para não confundir (se a gente colocasse o 10 em números também, poderia ficar confuso colocando o 1 e o 0), então ele termina com A, B, C, D, E e F, sendo que o A representa 10, o B 11, o C 12, o D 13, o E 14 e o F, 15.
Independente da base que for usada, o nosso sistema numérico é dito posicional porque a posição do algarismo do dígito vai determinar o valor que ele vai ter.
Por exemplo, o número 125 em base 10 pode ser representado como 1 x 10 elevado ao quadrado + 2 x 10 elevado a 1 + 5 x 10 elevado a zero.
10 elevado ao quadrado é 100, então 1 x 100 é 100 + 2 x 10 elevado à primeira é 20, então 120 + 5 vezes 10 elevado a 0. 10 elevado a zero é igual a 1 então 5 x 1 = 5. Total 125.
Como você pode ver, dependendo da posição você vai multiplicar pela base elevado à potência respectiva desta posição.
Então vamos ver um exemplo agora com base 2, o número binário 111. Isto seria equivalente a dizer 1 x 2 elevado ao quadrado + 1 x 2 elevado à primeira + 1 x 2 elevado a zero. o que dá um total de 7. 4 + 2 + 1.
A mesma coisa para base 16, então tenho lá: B7F. Isto seria equivalente a 11 x 16 elevado ao quadrado + 7 x 16 elevado à primeira + 15 x 16 elevado a 0. O que é equivalente ao número em base decimal 2943.
Aí a pergunta que vem à cabeça é: o por quê dessas bases que eu acabei de descrever? Base 10, base 2, base 16. Por que elas se tornaram populares ao invés de, por exemplo, uma base 3 ou Base 7?
A base 10, que é usada pelos seres humanos na maior parte dos contextos, se acredita que se tornou popular justamente porque nós temos 10 dedos. Então seria uma evolução natural a partir daí. Já a base 2, o sistema binário, que é usado nos computadores surgiu por uma limitação de hardware.
Os computadores usam transistores para realizar as operações lógicas e o transístor nada mais é do que um circuito elétrico que deixa ou não passar corrente, dependendo de como ele estiver estruturado. Ou seja, os computadores são representados por sinais elétricos, mais especificamente pela tensão. Por exemplo, eu acho que nos computadores modernos, os 3 volts de tensão (com uma margem de erro) representam o 1 no sistema binário e a ausência de tensão (com uma margem para erro também), até 0,5 volts (se não me engano), representa o 0. Se a gente quisesse usar um sistema com uma base maior do que a base 2, por exemplo a base 10, então representar com 10 algarismos, você teria que diferenciar esses sistemas elétricos entre 10 níveis de tensão. Por exemplo, de 0 a 0.3 seria o 0, de 0.3 a 0.6 seria o 1, de 0.6 a 0.9 o 2 e assim por diante. Mas o hardware não tem esse nível de precisão para diferenciar. Então ficaria um sistema muito instável. Por isso foi decidido e se adotou como padrão fazer “tensão” ou ”não tensão”, ou 0 ou 1, ou tensão muito baixa e tensão muito alta, ou 0 ou 1. E é um sistema que funcionou muito bem. E não é à toa que é usado até hoje nos computadores modernos.
Só faltou explicar o porquê do hexadecimal. Porque, em alguns contextos, a gente usa números com base 16. Então vamos lá. Pega o número 2943 com base 10. Se a gente converter isso para a base 2, ou seja, converter para binário, você vai ter esta sequência de bits. Um bit nada mais é do que um dígito binário, um número 0 ou 1. Um byte, por sua vez, para quem não sabe, é um conjunto de 8 bits.
Então, 2943 em base 10 se converte para base 2 em 101101111111.
Se eu converter esta sequência de bits para hexadecimal vai virar B7F. Então como você pode ver, eu tinha antes aí um número com 12 algarismos e ele passou a ter somente 3 na base 16.
Então a primeira razão para você usar a base 16 (o hexadecimal), é que ele serve para representar um número binário de uma forma muito mais concisa.
E a segunda razão é que a conversão do binário para o hexadecimal é muito fácil. Como você pode ver, se eu pegar os 4 dígitos da esquerda, 1011, isso é igual a B, em hexadecimal, que é o 11. Se eu pegar os quatro dígitos do meio, 0111, é igual a 7 e se eu pegar os quatro dígitos da direita, 1111, é igual a 15, que é o F.
Então basicamente eu posso converter em grupos de 4 bits e depois isso já me dá o resultado em hexadecimal.
Para finalizar, você pode estar se perguntando. Pô, Daniel, legal, números binários, números hexadecimais, mas qual é a relação disto tudo com os bitcoins e as outras criptomoedas? Vamos lá que eu vou te explicar.
Como você deve saber, a primeira coisa que você precisa para receber ou enviar um pagamento com bitcoins é uma carteira e qualquer carteira é composta por duas chaves: uma chave privada e uma chave pública. A chave privada é a que você usa para assinar as suas transações e enviar bitcoins e a chave pública é a que você usa para receber, ok?
Nessa imagem, você pode ver, esta é uma representação de um formato de uma chave pública. É um número binário de 256 bits, como você está vendo aí na primeira linha. Este número binário, esta tua chave pública também pode ser representado por um número hexadecimal, como você está vendo na segunda linha, numa representação muito mais concisa e aí o processo que o protocolo do Bitcoin faz é pegar esta chave pública, passar ela através de algumas funções hash. Em outro vídeo eu explico exatamente o que é uma função hash, mas basicamente ela vai transformar esta chave pública e encurtar ela para 160 bits inicialmente, e depois disso é passada por uma outra função que transforma o número binário em uma sequência de caracteres ilegíveis aos seres humanos, que é o que você está lendo na terceira linha. Então este Wallet Address, endereço da sua carteira, que você vai estar passando para a pessoa que quer te enviar bitcoins, nada mais é do que uma representação mais amigável do número binário da tua chave pública. A título de curiosidade, eu coloquei na última linha este mesmo número da chave pública em base 10 para você ter uma ideia do tamanho do número que é. Fica até um desafio que se alguém conseguir pronunciar é só postar nos comentários.
Bom, espero que você tenha gostado do vídeo. Não esquece de assinar o canal, curtir o vídeo e você também pode acessar o criptos.com.br, cadastrar o seu e-mail para receber os próximos artigos em vídeo e aprender exatamente como as criptomoedas e o Bitcoin funcionam.