“Hoje vamos sair da matrix e saber o que está por trás deste mundo que acreditamos ser real e que nos oculta a verdade…”
Ok… ok…, é só um tutorial sobre sistemas de numeração e conversões, só quis deixar um pouco mais empolgante 😀
Certo, chega de perder tempo, largue este livro e acompanhe o artigo.
Sistema numérico posicional
Em um sistema numérico posicional o valor do algarismo ou numeral varia conforme sua posição no conjunto de algarismos que representam o número.
O sistema decimal é posicional. Veja o no número 23.514, o algarismo dois vale vinte mil unidades enquanto que o algarismo 5 vale quinhentas unidades.
Para saber o valor só precisamos multiplicar pela base elevada à posição ocupada pelo número contando da direita para a esquerda a partir de zero.
4 x 10 elevado a 0 = 4 x 1 = 4
1 x 10 elevado a 1 = 1 x 10 = 10
5 x 10 elevado a 2 = 5 x 100 = 500
3 x 10 elevado a 3 = 3 x 1000= 3000
2 x 10 elevado a 4 = 2 x 10000 = 20000
4 + 10 + 500 + 3000 + 20000 = 23.514. Voilà!
Assim um sistema de base X precisa de X algarismos para representar os números, veja:
Base binária: algarismos de 0 a 1
Base decimal: algarismos de 0 a 9
Base octal: algarismos de 0 a 7
Base hexadecimal: de 0 a 9 e mais os símbolos A, B, C, D, E, F. Neste caso, como nossos dígitos indo-arábicos vão apenas de 0 a 9 utilizamos letras para representar os demais valores.
Para representar a base são utilizadas algumas convenções como um índice numérico ou texto indicando a base 15916 ou 159hex, 159decimal ou 15910
Mas, e os bits e bytes?
Como qualquer valor numérico pode ser expresso em qualquer sistema numérico posicional, o sistema binário ou de base 2 não fica de fora.
Um bit ou binary digit (dígito binário) como você já deve saber é a menor unidade de informação que pode ser armazenada em um computador e também um algarismo do sistema numérico posicional de base 2, pois só pode assumir 2 valores: 0 ou 1.
Obviamente dentro de um computador não existe os algarismos ‘0’ e ‘1’, porém toda a eletrônica digital e computação estão baseadas no sistema binário, porque os componentes dos sistemas eletrônicos sempre assumem um dentre dois estados: interruptores (fechados ou abertos), capacitores (carregados ou descarregados), circuitos (presença ou ausência de energia). Esses dois estados, são usados para representar a numeração de forma abstrata.
Um processador por exemplo é um circuito integrado complexo, capaz de lidar com bilhões de instruções por segundo, mas internamente é projetado com vários transistores que controlam o fluxo de corrente elétrica por meio de portas lógicas. As portas lógicas trabalham com operações booleanas, e essas operações manipulam valores do tipo verdadeiro-1 ou falso-0.
Partindo para os múltiplos do bit temos o byte, que é formado por oito bits ou oito algarismos “11111111” (255 em decimal) na notação binária, e os demais mais comuns, quilobyte (KB), megabyte (MB), gigabyte (GB) e terabyte (TB).
A informática acabou por incorporar valores e expressões que já existiam, isto é, os prefixos quilo, mega, giga, entre outros, foram criados para exprimir potências inteiras da base no sistema numérico de base dez, mas isso não acontece no sistema binário, algo que dificulta um pouco os cálculos, um mega (10³ ou 1000), por exemplo, em binário é 1111101000, portanto convencionou-se utilizar uma potência inteira de 2 mais próxima deste valor como 1024 ou 10000000000.
Na tabela abaixo você pode conferir a nomenclatura e as quantidades neste sistema de numeração:
Bit = um dígito binário 1 ou 0
1 Nibble = 4 bits
1 Byte = 8 bits
1 Kilobyte (kB) = 1024 Bytes
1 Megabyte (MB) = 1024 Kilobytes
1 Gigabyte (GB) = 1024 Megabytes
1 Terabyte (TB) = 1024 Gigabytes
1 Petabyte (PB) = 1024 Terabytes
1 Exabyte (EB) = 1024 Petabytes
1 Zettabyte = 1024 Exabytes
1 Yottabyte = 1024 Zettabytes. É byte que não acaba mais!
Hexadecimal
Os números hexadecimais servem para representar números binários de uma forma mais compacta, afinal é muito mais fácil trabalhar com um número como 1F4 do que 0001 1111 0100, isto é, na notação hexadecimal só precisamos de um único símbolo para representar um padrão de quatro bits. Prático né?
Conversões
Apesar da calculadora do seu sistema operacional já fazer isso por você, é interessante saber como converter de uma base para outra e existem diferentes métodos de se fazer isso. Para o artigo não ficar muito extenso vou mostrar apenas alguns.
A tabela abaixo pode ser útil para daqui para frente:
| Decimal | Binário | Hexadecimal | Octal |
| 0 | 0000 | 0 | 0 |
| 1 | 0001 | 1 | 1 |
| 2 | 0010 | 2 | 2 |
| 3 | 0011 | 3 | 3 |
| 4 | 0100 | 4 | 4 |
| 5 | 0101 | 5 | 5 |
| 6 | 0110 | 6 | 6 |
| 7 | 0111 | 7 | 7 |
| 8 | 1000 | 8 | 10 |
| 9 | 1001 | 9 | 11 |
| 10 | 1010 | A | 12 |
| 11 | 1011 | B | 13 |
| 12 | 1100 | C | 14 |
| 13 | 1101 | D | 15 |
| 14 | 1110 | E | 16 |
| 15 | 1111 | F | 17 |
Decimal em Binário
Usando 336 como exemplo:
- Crie uma tabela com as potências de dois no cabeçalho. As potências devem ir até o valor mais próximo do número que desejamos converter.
| 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Agora a regra é somar as potências até obtermos o número decimal sem ultrapassá-lo, se isso acontecer colocamos 0 abaixo da potência na tabela e passamos para a próxima, caso contrário colocamos 1, então vamos lá:
- 256, é menor que 336 então coloque 1 na coluna 256.
- 256 + 128 = 384, é maior que 336 então coloque 0 na coluna 256.
- 256 + 64 = 320, é menor que 336 então coloque 1 na coluna 64.
- 320 + 32 = 352, é maior que 336 então coloque 0 na coluna 32.
- 320 + 16 = 336, é o valor que procuramos então coloque 1 na coluna 16 e para o restante coloque 0.
- Ao final temos:
| 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
| 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
336 em decimal é 101010000 em binário.
Binário em Decimal
Agora faremos o inverso, converter 101010000 de volta para decimal. A ideia é praticamente a mesma:
- Crie uma tabela com os dígitos binários como cabeçalho, e as potências de dois em ordem crescente da direita para a esquerda
| 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
| 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
- Agora é só somar os valores das colunas que tiverem o valor 1 no cabeçalho: 256 + 64 + 16 = 336
É ou não é de uma simplicidade franciscana?
Decimal em Hexadecimal
Usando 2.189 como exemplo:
- Divida o número pela base e em seguida faça o mesmo com os quocientes sucessivamente, desconsiderando a parte decimal até que o último quociente seja zero
- 2189 / 16 = 136, resto 13
- 136 / 16 = 8, resto 8
- 8 / 16 = 0, resto 8
- O número hexadecimal será a sequência do último resto até o primeiro, ou seja, 8813, onde podemos substituir 13 por D, ficando 88D o número que procuramos.
Binário em Hexadecimal e vice-versa
Usando 111010001101011101 como exemplo:
Você deve estar pensando: “Nossa! Vou levar horas para converter este número bizarro”. Se acalme, é bem simples também.
- Divida o número em subcadeias de tamanho quatro da direita para a esquerda e se faltarem dígitos acrescente zeros
- Abaixo de cada grupo coloque seu valor correspondente em hexadecimal
| 0011 | 1010 | 0011 | 0101 | 1101 |
| 3 | A | 3 | 5 | D |
Aí está o valor em hexadecimal que procuramos 3A35D
Binário em Octal
111010001101011101 como exemplo.
É a mesma ideia do exemplo anterior só que desta vez separando em subcadeias de três dígitos:
- Divida o número em subcadeias de tamanho três da direita para a esquerda e se faltarem dígitos acrescente zeros
- Abaixo de cada grupo coloque seu valor correspondente em octal
| 111 | 010 | 001 | 101 | 011 | 101 |
| 7 | 2 | 1 | 5 | 3 | 5 |
E este é o valor em octal que procuramos 721535
Bom, por hoje é só pessoal, em outros tutoriais veremos mais alguns assuntos como operações e lógica aritmética.
