06.09.2013, 16:05
Binбrios & Hexadecimal
Boas pessoal, hoje vou fazer um tutorial sobre binбrios e hexadecimal, й uma das coisas fundamentais e interessantes na programaзгo.Primeiro irei explicar o que sгo binбrios, bem binбrio й um sistema base-2, isso significa que podemos representar qualquer nъmero do nosso base-10 (chamado de sistema decimal - "dec" significa 10) usando apenas 2 dнgitos - 1 e 0 - em vбrias combinaзхes.
Para o computador nгo й simplesmente 1 e 0, eles sгo impulsos elйctricos , on state (1) e off state (0) , digamos que й como um switch ou um interruptor de luz, visto que vocк quando desliga nгo hб passagem de corrente elйctrica e quando liga tem passagem de corrente elйctrica, dessa forma tudo o que existe num computador, seja letras, imagens, sites, jogos, й composto por binбrios, dessa forma um binбrio 1 ou um binбrio 0 й chamado de bit (abreviaзгo de binary digit) , por exemplo 4 bits ( 1010 ) й chamado de nibble que pode ter valores entre 0 e 15 (16 valores distintos) , agora outro exemplo, 8 bits (10101110) й chamado de 1 byte que pode ter valores entre 0 e 255, dessa forma 1 byte dб para representar qualquer carбcter que existe na tabela ASCII que tem valores de 0 a 255.
Como calcular nъmeros binбrios
Vamos comeзar com um nibble (4 bits) para calcularmos.
Exemplo: 1011
8 | 4 | 2 | 1 |
1 | 0 | 1 | 1 |
8 | 4 | 2 | 1 | resultado |
3 | 2 | 1 | 0 | potкncia |
Agora eu vou ensinar uma forma para nгo esquecer e nгo precisar de fazer esse 2 elevado a (...)
Vocк jб reparou que quando tem um sistema operativo 64-bits o inferior й 32-bits, logo a seguir serб 16 e depois 8 , 4 , 2 e por fim 1. Entгo jб reparou que isto й tudo uma sequкncia de x + x , 8 + 8 й 16 , logo 16 + 16 й 32. Eu sei que isto parece complicado, mas eu vou mostrar a minha conta de cabeзa atй aos 2048, entгo veja:
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048. Entгo й sу decorar.
Voltando ao nosso calculo:
8 | 4 | 2 | 1 |
1 | 0 | 1 | 1 |
Sabemos que este nibble tem um valor decimal de 11. Vamos ver outro exemplo: (8 bits - 1 byte)
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
Bem entгo sobre os binбrios й sу isto, mas como eu gosto de binбrios irei mostrar outro exemplo, este exemplo й para determinar o nosso ano, neste caso 2013.
2048 | 1024 | 512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | ||
0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | 1 |
Hexadecimal
Provavelmente todos nуs jб vimos Hexadecimal, principalmente no em html ou aqui no sa-mp, todos nos jб vimos algo como isto #A09CF3 ou isto 0xA09CF3, o Hexadecimal й um sistema base-16 (hex = 6 , dec = 10) , isto й bastante diferente do sistema base-2 ou base-10, isto significa que temos dнgitos de 0 a 15, porйm como nos sabemos os nъmeros decimais sу vгo de 0 a 9, entгo para representar o 10 a 15 й necessбrio sнmbolos.
DECIMAL | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
HEXADECIMAL | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
2*100 + 3*10 + 5 ou 200 + 30 + 5
Outro valor 1236:
1 * 1000 + 2 * 100 + 3 * 10 + 6 ou 1000 + 200 + 30 + 6
O Hexadecimal й parecido, sу que em vez de usarmos como no decimal 10 elevado a (...) no Hexadecimal usamos 16 elevado a (...) , isto tem a sua lуgica.
Entгo vamos calcular o seguinte exemplo. 0xA0FF ou #A0FF , lembre-se que o 0x e o # sгo identificadores.
4096 (16^3) | 256 (16^2) | 16 (16^1) | 1 (16^0) |
A | 0 | F | F |
4096 (16^3) | 256 (16^2) | 16 (16^1) | 1 (16^0) |
10 | 0 | 15 | 15 |
10 vezes 4096 , 0 vezes 256 , 15 vezes 16 e 15 vezes 1 , logo ficarб: 10*4096 + 0 * 256 + 15 * 16 + 1 * 15 = 41215.
Outro exemplo: 0xB9
16 | 1 |
B | 9 |
16 | 1 |
11 | 9 |
Agora iremos aumentar o tamanho, vamos usar o seguinte valor Hexadecimal 0xA09CF3.
16^5 | 16^4 | 16^3 | 16^2 | 16^1 | 16^0 |
A | 0 | 9 | C | F | 3 |
1048576 | 65536 | 4096 | 256 | 16 | 1 |
A | 0 | 9 | C | F | 3 |
1048576 | 65536 | 4096 | 256 | 16 | 1 |
10 | 0 | 9 | 12 | 15 | 3 |
Como pode ver isto й um valor muito grande, mas imaginamos que vocк no seu gamemode queria colocar um valor que serб grande, entгo para isso usamos os valores Hexadecimal, para encurtarmos o tamanho da escrita que facilita bastante.
Converter Binбrios para Hexadecimal
Para converter binбrios para Hexadecimal й bastante fбcil, vejamos o exemplo com o binбrio: #10111101
Nota: Usei # no binбrio para nгo se confundir com decimal.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
8 | 4 | 2 | 1 | 8 | 4 | 2 | 1 | |
1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
Para converter para Hexadecimal nуs separamos os 4 bits esquerdos dos 4 bits direito, ficarб assim:
4 bits esquerda | 1011 | = 8 + 2 + 1 | = 11 | = 0xB |
4 bits direita | 1101 | = 8 + 4 + 1 | = 13 | = 0xD |
Entгo й isto, espero que o tutorial tenha sido ъtil.
Crйditos:
- BlueX - criador do tutorial
- Stewie` (steki) - longas conversas
- John Selvia - criador de um pdf sobre binбrios e hexadecimal
- Funeral - conversas de binбrios
- ipsBruno - conversas produtivas