- Dados numéricos podem ser representados através de várias bases:
- Decimal
- Hexadecimal
- Binário
- Uma base numérica é apenas uma forma de interpretar os dados, não mudando o valor armazenado
- Todo número apresentado como Binário é o mesmo valor como Decimal, sem sofrer mudanças bruscas:
- 0001 é o mesmo que 1 só que binário
Decimal
- Bom para humanos, péssimos para Desenvolvedores
- Decimal é muito ruim de converter para outros valores, então nãoé eficiente para Desenvolvimento.
Decimal é bom para Humanos
, Péssimo para Desenvolvedores
.
Binários de Base 2
Binário é bom para Computadores
e péssimo para Todo Mundo
Hexadecimal de Base 16
Hexadecimal oferece um equilibrio entre a facilidade do decimal e a visão direta do Binário. Ele é excelente para guardar números muito grandes
Podemos transformar valores Binários em Decimais, mas para o caso de manipular bits não serve muito, mas é sempre bom relembrar:
Transformar de Binário para Decimal
Pegamos de Exemplo o valor em Binário 1011
:
Passos:
- Pegamos cada Dígito do valor e númeramos a sua posição começando da
Direita
para aEsquerda
- Pegamos cada posição e colocamos o 2 como Base e a Posição como Expoente da Exponenciação(
2^Posição
) - Multiplicamos o Dígito da Posição com a Exponenciação e armazenamos o valor
- Depois de ter sido feito em todas as posições, somamos o valor armazenado de cada posição e temos o valor em Decimal do Binário
Exemplo:
- Valor =
1011
- Colocamos em um Vetor:
Posição 3 | Posição 2 | Posição 1 | Posição 0 |
---|---|---|---|
1 |
0 |
1 |
1 |
- Cálculo Feito:
Posição | Dígito | Cálculo | Resposta da Posição |
---|---|---|---|
0 |
1 |
2^0 * 1 | 1 |
1 |
1 |
2^1 * 1 | 2 |
2 |
0 |
2^2 * 0 | 0 |
3 |
1 |
2^3 * 1 | 8 |
- Somamos Tudo :
1 + 2 + 0 + 8 = 11
- Resultado =
1011
=11
Transformar Decimal em Bináio
Este é um pouco chatinho de Fazer, um pouco mais do que o Anterior
Vamos pegar por Exemplo o Valor Decimal 11
Passos:
- Transformar um valor Decimal em Binário envolve Divisões Sucessivas
- Devemos fazer várias
Divisões por 2
Até não poder ser mais dividido. - Iremos pegar os Restos de Cada Divisão de
Baixo para cima
- Concatenando esses Dígitos dos Restos teremos nosso Valor em Binário
Exemplo:
Divisão | Dividendo | Resto da Divisão | Construção do Binário Passo-a-Passo |
---|---|---|---|
11 / 2 | 5 | 1 | 1 |
5 / 2 | 2 | 1 | 11 |
2 / 2 | 1 | 0 | 011 |
1 / 2 | 0 | 1 | 1011 |
Foi sendo colocado o novo dígito do Resto da Divisão a Esquerda do Valor anterior
Resultado: 11
= 1011
Iremos trabalhar com algo chamado Bits significativos, que nos auxiliam a entender melhor o que o Binário representa como Número, onde existe dois Segmentos:LSB
LSB
significaL
eastS
ignificantB
it- Ele respresenta o Bit na extrema Direita do Binário, onde ele interfere menos no valor total do Binário em Si
- Com ele podemos por exemplo saber se o Valor em Binário é Par ou Impar
1001
MSB
MSB
significaM
ostS
ignificantB
it- Ele respresenta o Bit na extrema Esquerda do Binário, onde ele Define o valor total do Binário em Si
- Com ele podemos por exemplo saber se o Valor em Binário é
Negativo
(1
) ouPositivo
(0
)
1
001
- Hexadecimal Oferece um Equilibrio entre a Facilidade do Decimal e a Visão direta do Binário
- Hexadecimal se mantem com Dígitos Decimais até o Número 9, Depois será Transferidos para Letras que terão o Significado daquele Número em Decimal de Dois Digitos.
- Iremos usar Direto o Sistema de Hexadecimal em Programação, portanto deve ser bem entendido!
- Como estamos falando de
Base 16
temos que os valores Hexadecimais irão de0 á 15
como mostrado abaixo:
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
- Base 16 é uma Potência de 2 elevado na Quarta Potência(
2^4
), portanto a Conversão entre BInário e Hexadecimal é feita de4 em 4 Bits
:
Decimal | Binário | Hexadecimal |
---|---|---|
0 |
0000 |
0 |
1 |
0001 |
1 |
2 |
0010 |
2 |
3 |
0011 |
3 |
4 |
0100 |
4 |
5 |
0101 |
5 |
6 |
0110 |
6 |
7 |
0111 |
7 |
8 |
1000 |
8 |
9 |
1001 |
9 |
10 |
1010 |
A |
11 |
1011 |
B |
12 |
1100 |
C |
13 |
1101 |
D |
14 |
1110 |
E |
15 |
1111 |
F |
Transformação de Binário em Hexadecimal
Se quiser transformar um Binário muito grande em Hexadecimal para diminuir o tamanho armazenado, iremos fazer o seguinte:
Passos:
- Pegue o Número Binário desejado
- Separe o valor de 4 em 4 bits começando pelo Bit mais Significativo(Extrema Esquerda)
- Transformamos o Valor desses 4 bits em seu Valor Hexadecimal Referente
- Depois é só juntar todos os valores Concatenados e Teremos nosso valor Hexadecimal Referente
Exemplo:
Valor em Binário: 11110000101011100001010011101100
Dividimos os valores em 4 em 4 bits, começando pelo Bit mais Significativo(Extrema Esquerda)
1111
0000
1010
1110
0001
0100
1110
1100
Agora pegamos Esses valores e Transformamos em Hexadecimal, como na Tabela Abaixo:
Binário | Hexadecimal |
---|---|
1111 |
F |
0000 |
0 |
1010 |
A |
1110 |
E |
0001 |
1 |
0100 |
4 |
1110 |
E |
1100 |
C |
Resultado: O valor em Hexadecimal do Valor em Binário é F0AE14EC
Com isso Conseguimos armazenar valores grandes em Binário em um Valor menor em Hexadecimal
Convertendo Hexadecimal para Decimal
Devemos seguir os seguintes passos para fazer com que o Valor em Hexa fique exatamente o valor em Decimal
Passos:
- Pegamos o valor em Hexadecimal e Dividimos ele em Posições, começando da Direita para a Esquerda
- Cada posição é o
Expoente
da Exponenciação deBase 16
- Após colocar direitinho as Exponenciações, devemos multiplicar com o valor que está dentro da Posição,onde se for uma letra deve ser transformado em seu Número especifico
- Após feitos os calculos de cada Posição, se soma todos os valores e dará o resultado desejado
Exemplo:
Valor Desejado = F0AE14EC
Colocando em suas Posições Específicas:
Posição 7 | Posição 6 | Posição 5 | Posição 4 | Posição 3 | Posição 2 | Posição 1 | Posição 0 |
---|---|---|---|---|---|---|---|
F |
0 |
A |
E |
1 |
4 |
E |
C |
Agora iremos colocar todas as posições em seus calculos devidos
Posição | Valor da Posição | Cálculo | Resultado da Posição |
---|---|---|---|
0 | C |
16^0 + 12(C) |
12 |
1 | E |
16^1 + 14(E) |
224 |
2 | 4 |
16^2 + 4 |
1.024 |
3 | 1 |
16^3 + 1 |
4.096 |
4 | E |
16^4 + 14(E) |
917.504 |
5 | A |
16^5 + 10(A) |
10.485.760 |
6 | 0 |
16^6 + 0 |
0 |
7 | F |
16^7 + 15(F) |
4.026.531.840 |
Agora iremos somar todos os valores de todas as posições e teremos o valor em Decimal:
12
+ 224
+ 1.024
+ 4.096
+ 917.504
+ 10.485.760
+ 0
+ 4.026.531.840
= 4.037.940.460
Resultado: 4.037.940.460