Sistemas básicos como binário e hexadecimal parecem um pouco estranhos no início. A chave é entender como os diferentes sistemas “tick over” como um odômetro quando eles estão cheios. Base 10, nosso sistema decimal, “tiquetaque sobre” quando recebe 10 itens, criando um novo dígito. Esperamos 60 segundos antes de “tick-over” para um novo minuto. Hex e binário são semelhantes, mas marque sobre cada 16 e 2 itens, respectivamente.
Try convertendo números para hex e binário aqui:
Voltar quando: Números Unários
Voltar atrás no tempo, nós não tínhamos sistemas base! Era a subir em ambos os sentidos, através da neve e do calor abrasador. Quando você queria contar um, você escrevia:
l
Quando você queria 5, você escrevia
lllll
E claramente, 1 + 5 = 6
l + lllll = llllll
Esta é a maneira mais simples de contar.
Entre os romanos
Em numerais romanos, dois era um, duas vezes. Três era um, três vezes:
one = Itwo = IIthree = III
No entanto, eles decidiram que podiam fazer melhor do que a velha tradição das linhas na areia. Por cinco, poderíamos usar V para representar lllll e obter algo como
l + V = Vl
Não é mau, eh? E claro, existem muitos mais símbolos (L, C, M, etc.) que você pode usar.
O ponto chave é que V e lllll são duas formas de codificar o número 5.
Dê um nome a cada número
A outra descoberta foi perceber que cada número pode ser o seu próprio conceito distinto. Em vez de representar três como uma série de um, dê-lhe o seu próprio símbolo: “3″. Faça isso de um a nove, e você obtém os símbolos:
1 2 3 4 5 6 7 8 9
Os romanos estavam próximos, tão próximos, mas apenas deram símbolos únicos a 5, 10, 50, 100, 1000, etc.
Utilize sua posição
Agora claramente, você não pode dar a cada número o seu próprio símbolo. Há simplesmente demasiados.
Mas repare numa visão sobre números romanos: eles usam a posição dos símbolos para indicar o significado.
IV significa “subtrair 1 de 5″
e VI significa “adicionar 1 a 5″.
No nosso sistema numérico, usamos a posição de uma forma semelhante. Nós sempre adicionamos e nunca subtraímos. E cada posição é 10 mais do que a anterior.
Nossa escolha de base 10
Por que escolhemos multiplicar por 10 de cada vez? Muito provavelmente porque temos 10 dedos.
Um ponto para perceber é que você precisa de dígitos suficientes para “encher” até atingir o próximo número. Deixe-me demonstrar.
Se quisermos rolar o odômetro a cada 10, por assim dizer, precisamos de símbolos para os números de um a nove; ainda não chegamos a dez. Imagine números como um tiquetaque para cima lentamente – em que ponto você vira a próxima unidade e começa do nada?
Enter zero
E o que acontece quando chegamos a dez? Como mostramos que queremos exactamente um “dez” e nada na coluna “um”?
Usamos zero, o número que não existe. Zero é um conceito e tanto, é um espaço em branco, um espaço em branco, e muito mais. Basta dizer que o Zero é uma das grandes invenções de todos os tempos.
Zero permite-nos ter um espaço vazio, algo que os Romanos não tinham. Vejam como os números deles são inabaláveis sem ele.
A famosa novela do George Orwell “1984″ seria “MCMLXXXIV”! Rolou da língua, não foi?
Considerando outras bases
Lembrar que escolhemos rolar sobre o nosso odômetro a cada dez. A nossa contagem é assim:
123456789 (uh oh, I'm getting full!)10 (ticked over – start a new digit)
E se fizéssemos um “tick” aos 60 quando contávamos, como fazemos para segundos e minutos?
1 second2345…58591:00 (60 seconds aka 1 minute. We've started a new digit.)
Tudo OK até agora, certo? Note que nós usamos os dois pontos (:) indicam que estamos em um novo “dígito”. Na base 10, cada dígito pode ficar sozinho.
Try Base 16
Se quisermos a base 16, podemos fazer algo semelhante:
123456789101112131415 (we're getting full)1:00 (16 – we've started a new digit)
No entanto, não queremos escrever números hexadecimais com a notação de dois pontos (mesmo que pudéssemos). Preferimos cozinhar símbolos separados para 10-15 para que possamos apenas escrever números como estamos acostumados. Ficamos sem números (1-9 já usados, com 0 como espaço reservado), por isso precisamos de outros símbolos. Poderíamos usar algumas linhas com rabiscos ou outras formas, mas as convenções são para usar letras, estilo romano. Assim como 5 se tornou V, os programadores usam letras A-F para obter dígitos suficientes até 16. Isto é,
123456789A (10 – we're using the symbol "A")B (11)C (12)D (13)E (14)F (15 – uh oh, we're getting full)10 (16 – we start a new digit)
Ahah! Agora podemos usar um dígito por “lugar”, e sabemos que 10 na verdade significa que “marcámos para 16″ uma vez.
20 significa que marcámos para 16 duas vezes (32).
25 significa que marcámos para 16 duas vezes (dando-nos 32) e fomos um 5 extra. O total é 32 + 5 = 37.
Revisão rápida
Comigo até agora? Isto é muito fixe, não é? Nós podemos contar em qualquer sistema que quisermos. Note também que a base 16 é mais “eficiente no espaço” no sentido em que podemos escrever um número como 11 em um único dígito: B.
A base 16 não é muito diferente da base 10, só demoramos mais tempo a preencher.
O maravilhoso mundo do binário
Vimos muitos sistemas de base, desde os unários mais simples, até aos numerais romanos pouco unilaterais, a base 10 contínua e a base compacta 16.
O que há de bom no binário? No espírito de manter as coisas simples, é o sistema numérico mais simples que tem o conceito de “ticking over”. Unário, onde apenas escrevemos 1, 11, 111… continua para sempre. Binário, com duas opções (1 e 0) parece assim:
1: 12: 10 (we're full – tick over)3: 114: 100 (we're full again – tick over)5: 1016: 1107: 1118: 1000 (tick over again)…
e assim por diante.
Porque o binário é tão simples, que é muito fácil de construir em hardware. Você só precisa de coisas que possam ligar ou desligar (representando 1 e 0), em vez de coisas que tenham 10 estados possíveis (para representar decimal).
Porque é tão simples, o binário também é resistente a erros. Se o seu sinal está “parcialmente ligado” (digamos 0,4), você pode assumir que é um zero. E se estiver maioritariamente ligado (digamos 0.8), então você pode assumir que é um 1. Se você estiver usando um sistema com 10 estados possíveis, é difícil dizer quando um erro ocorreu. Esta é uma das razões porque os sinais digitais são tão resistentes ao ruído.
Outros exemplos de bases
Usamos outras bases o tempo todo, mesmo mudando dinamicamente as bases. Normalmente não pensamos assim:
Horas, minutos, segundos: 1:32:04
- Sabemos que isto é 1 hora, 32 minutos, 4 segundos. Em segundos, isto é 16060 + 32*60 + 4,
Pés e polegadas: 3′ 5″
- Esta é de 3 pés, 5 polegadas ou 3 * 12 + 5 polegadas.
Libras e onças: 8 lbs, 5 oz
- Desde que uma libra seja 16 oz, Isto é 8 * 16 + 5 oz. Temos usado um sistema de 16 números base o tempo todo!
Parting thoughts
“10″ em qualquer sistema de números indica a base, e significa que já assinalamos uma vez. 10 em binário significa dois, 10 em decimal significa dez, e 10 em hexadecimal é dezasseis.
Como você mantém esses números separados? Os programadores irão muitas vezes escrever “0b” em frente aos números binários. Então 2 em binário é
0b10
Simplesmente, eles escreverão 0x em frente dos números hexadecimais. Então 16 em hex é:
0×10
Se não houver nenhum símbolo (0b ou 0x) na frente, assumimos que é base 10, um número regular.
Agora vá em frente e aproveite seus novos conhecimentos!
Outros Posts Nesta Série
- Sistemas Numéricos e Bases
- O Guia Rápido de Guias
- Entendendo o Quake’s Fast Inverse Square Root
- Uma Introdução Simples ao Computador Networking
- Swap duas variáveis usando XOR
- Entendendo Big and Little Endian Byte Order
- Unicode and You
- Um pouco diddy sobre formatos de arquivos binários
- Algoritmos de classificação
>
>
>