Skip to content

Latest commit

 

History

History
213 lines (145 loc) · 7.32 KB

bases-numericas.md

File metadata and controls

213 lines (145 loc) · 7.32 KB

Bases Numéricas

Revisando Bases Numéricas

  • 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

Manipulação de Binários

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:

  1. Pegamos cada Dígito do valor e númeramos a sua posição começando da Direita para a Esquerda
  2. Pegamos cada posição e colocamos o 2 como Base e a Posição como Expoente da Exponenciação(2^Posição)
  3. Multiplicamos o Dígito da Posição com a Exponenciação e armazenamos o valor
  4. 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:

  1. Transformar um valor Decimal em Binário envolve Divisões Sucessivas
  2. Devemos fazer várias Divisões por 2 Até não poder ser mais dividido.
  3. Iremos pegar os Restos de Cada Divisão de Baixo para cima
  4. 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

Bits Significativos dos Binários

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 significa Least Significant Bit
  • 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 significa Most Significant Bit
  • 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) ou Positivo(0)

1001

Mexendo com Hexadecimal de Base 16

  • 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 de 0 á 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 de 4 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:

  1. Pegue o Número Binário desejado
  2. Separe o valor de 4 em 4 bits começando pelo Bit mais Significativo(Extrema Esquerda)
  3. Transformamos o Valor desses 4 bits em seu Valor Hexadecimal Referente
  4. 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:

  1. Pegamos o valor em Hexadecimal e Dividimos ele em Posições, começando da Direita para a Esquerda
  2. Cada posição é o Expoente da Exponenciação de Base 16
  3. 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
  4. 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