Novo aqui? Alguns posts que deveria ver:

Temas
Mapa do Blog
Mídias oficiais do Blog

domingo, 27 de março de 2011

Decimal, binário e hexadecimal

É importante conhecer essas bases númericas. A decimal já conhecemos, porque é a que usamos. A binária é a numeração que os computadores usam, composta apenas de 0 e 1. E a hexadecimal, composta por 16 símbolos, ajuda a trabalhar com binário e decimal, facilitando nas conversões e na leitura dos bytes como veremos nesse tutorial.

Decimal
Como já foi dito, esse é o sistema númerico que utilizamos normalmente. Ele é composto 10 símbolos, são eles: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Não vamos discutir sobre esse sistema, então vamos aos números binário.

Binário
O sistema de numeração é bem simples com relação ao símbolos utilizados: apenas 0 e 1. Ou seja, cada casa numérica tem apenas dua possibilidades. Com a tabela a seguir, que mostra número binários e suas respectivas representações binárias, ficará fácil de entender:
Binário Decimal
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15
Tabela 1

Como já sabemos, usando o sistema decimal, podemos formar 10 números diferentes com apenas um dígito, e se precisarmos forma um número maior basta acrescentar mais um dígito, o que permite formar 100 números diferentes. Ou seja, a cada dígito a quantidade de número que podemos formar é multiplicada por 10.
Com o binário a ideia é a mesma, porém número usado é o 2. Com um dígito podemos forma 2 números, com dois dígitos podemos formar 4, com 3 dígitos formar 8 números diferentes. Ou seja, a cada dígito acrescentado, a quantidade de números difentes é multiplicada por 2.
Você deve ter percebido que os números binários são longos em comparação aos decimais. E com o tempo também vai perceber que é um pouco chato lê-los e também convertê-los para decimal pra facilitar a leitura. Então vamos ver os números Hexadecimais antes aprender como fazer a conversão entre essas bases.

Hexadecimal
É comum encontrar números hexadecimais representando endereços de memória. Os números hexadecimais são compostos por 16 símbolos: os símbolos de 0 a 9 e as letras A, B, C, D, E, F. Para facilitar, vamos direto para a tabela:

Hexadecimal Decimal
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15
Tabela 2

A ideia é a mesma: cada dígito pode formar 16 números diferentes, e a cada dígito acrescentado a quantidade de números que podem ser formados é multiplicada por 16, ou seja, para 2 dígitos 16x16=256, para 3 dígitos 16x16x16=4096, e assim em diante.
Agora vamos ver como fazer a conversão entre essas bases numéricas

DECIMAL para BINÁRIO
Devemos divir o número decimal por 2 e guardar o resto da divisão(que sempre será 0 ou 1). O resultado dessa divisão deve ser dividido por 2 novamente, e seu resto também deve ser guardado. Esse processo deve ser feito até que o resultado da divisão seja 1(com exceção da conversão do número 0). Então juntamos o resultado dessa última divisão(1) com os restos das divisões que guardamos, do último para o primeiro. Com a imagem, a técnica de conversão ficará bem clara:
decimal para binário

BINÁRIO para DECIMAL
Para essa conversão é preciso conhecer exponenciação. Primeiro um exemplo em seguida a explicação:

*OBS: o sinal ** representa elevar a uma potência, portanto, 2**2 é o mesmo que 2², ou 2 elevado a 2.

Convertendo 1111 para decimal:

1 1 1 1
1 x 2**3 + 1 x 2**2 + 1 x 2**1 + 1 x 2**0
8 + 4 + 2 + 1 = 15

Convertendo 1110 para decimal:

1 1 1 0
1 x 2**3 + 1 x 2**2 + 1 x 2**1 + 0 x 2**0
8 + 4 + 2 + 0 = 14

Pelos exemplo acima, é possível perceber que é somado o valor resultante de cada dígito, e o valor de cada dígito é diferente conforme sua “posição” no número. Se for o primeiro dígito, deve-se elevar 2 a 0 e multiplica pelo valor do dígito(0 ou 1), se for o segundo dígito eleve 2 a 1 e multiplique pelo valor do dígito, e assim vai. Depois de calcular quanto cada dígito binário vale como decimal, basta somá-los para saber quanto aquele número binário por inteiro vale em decimal.

Conversões com Hexadecimal
Não vou mostrar como fazer conversões de hexadecimal para binário e decimal, e vice-versa, como mostrei há pouco. Mas é possível aplicar essas técnicas também, basta adaptar as técnincas, então experimente tentar fazer isso, assim você garante que aprendeu mesmo.
Vou ensinar outra forma mais prática de fazer essas conversões, usando uma tabela.

Tabela para conversão
As tabelas apresentadas anteriormente mostrava até o número 15, e isso não foi por acaso. Vamos usar a tabela abaixo para as conversões:


Binário Hexadecimal Decimal
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 A 10
1011 B 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15
Tabela 3

Perceba que montei a coluna de número binários usando 4 dígitos para cada número, mesmo em alguns desses números alguns dígitos não tenham valor(zeros a esquerda). Isso foi para facilitar a visualização para conversões entre hexadecimal e binário. Os números binários de 0 a 1111 são equivalente aos hexadecimais de 0 a 16. Então, cada conjunto de 4 digitos binário em um número equivale a um dígito hexadecimal. Por isso é interessante conhecer essa tabela(decorar os valores ou saber montá-la), por que a partir dele para fazer a conversão entre essas bases, basta fazer substituições. O exemplo a seguir deixará claro a técnina:


*OBS:Vou usar a notação que indica a base em que o número está escrito, que é:
(número)base escrita com números pequenos

Converter (1110001)2 para hexadecimal.

01110001
71

Então:

(11110001)2 = (71)16

Perceba que eu separei o número binário em grupos de 4 da esquerda para direita e depois substitui o equivalente hexadecimal de cada um dos grupos de 4 dígitos binários. Depois disso bastou juntar os hexadecimais que obtive para formar o número convertido.


*Experimente usar uma calculadora científica para conferir as conversões, ou um aplicativo de calculadora que tenha instalado em seu computador. Atente para o fato que nem toda calculadora científica tem a função de converter essas bases numéricas.

Aproveitando o exemplo, vamos ver como fica mais fácil converter o número hexadecimal para o decimal:


(71)16 = (?)10

7x16**1 + 1 = 113

Então:

(11110001)2 = (71)16 = (113)10

A converção hexadecimal para decimal ficou mais compacta que a de binário para decimal direto.

Agora vejamos a conversão de hexadecimal para binário:


Converter (7F)16 para binário.

7F
01111111

Então:

(7F)16 = (01111111)2

Foi o caminho contrário da outra conversão. Vimos os grupos de 4 dígitos binários equivalentes a cada dígito hexadecimal e depois jutamos todos para formar o número binário.


Finalizando

Espero que esse tutorial tenha sido útil e fique à vontade para comentar.

Refrências interessantes para pesqisar:

  • livro "Microcomputadores e Microprocessadores" por A. Malvino.
  • endereçamento de memória
  • contador 4029

Um comentário:

Unknown disse...

Este site é excelente para para pesquisa e tirar dúvidas.Parabéns!

Postar um comentário