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
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 |
Agora a questгo й como й que й determinado esses valores de ( 1, 2, 4, 8 ) , caso ainda nгo tenha entendido esses valores sгo mъltiplos de 2.
8 | 4 | 2 | 1 | resultado |
3 | 2 | 1 | 0 | potкncia |
Agora para confirmar vocк pega em uma calculadora e faz o seguinte calculo 2 ^ 0 , vai reparar que o resultado й 1, agora faзa 2^1 , 2^2 e 2^3 , vocк vai confirmar que os respectivos resultados sгo: 2 , 4 e 8.
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:
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 |
Vamos proceder ao calculo, para determinar o valor do nosso binбrio basta somar os valor que estгo por cima, lembrando que o 1 й on e o 0 й off, logo vocк nunca irб somar o valor que corresponde ao 0, entгo serб: 8+2+1 = 11
Sabemos que este nibble tem um valor decimal de 11. Vamos ver outro exemplo: (8 bits - 1 byte)
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 |
Lembre-se que deve cortar todos os zeros, entгo ficarб. 128+16+8+2+1 = 155 , entгo sabemos que o nosso binбrio terб um valor decimal de 155.
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.
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 |
Dessa forma ficarб: 1024+512+256+128+64+16+8+4+1 = 2013 , bem como pode ver й bastante simples, agora vamos falar dos Hexadecimal.
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.
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 |
Para calcular valores Hexadecimal й bastante parecido ao decimal, por exemplo, em decimal para obtermos o valor 235 fazemos.
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.
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 |
Sabemos que o A tem valor de 10 e F tem valor de 15, logo ficarб assim.
4096 (16^3) | 256 (16^2) | 16 (16^1) | 1 (16^0) |
10 | 0 | 15 | 15 |
Entгo para calcularmos o valor do nosso Hexadecimal teremos de fazer o seguinte:
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
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 |
Sabemos que B tem valor de 11, logo ficarб:
16 | 1 |
11 | 9 |
Entгo serб: 11 * 16 + 9 * 1 = 185
Agora iremos aumentar o tamanho, vamos usar o seguinte valor Hexadecimal 0xA09CF3.
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 |
Convertendo os valores de potкncias:
1048576 | 65536 | 4096 | 256 | 16 | 1 |
A | 0 | 9 | C | F | 3 |
Entгo agora iremos converter o A, C e F.
1048576 | 65536 | 4096 | 256 | 16 | 1 |
10 | 0 | 9 | 12 | 15 | 3 |
Entгo ficarб: 10 * 104857 + 0 * 65536 + 9 * 4096 + 12 * 256 + 15 * 16 + 3 * 1 = 1088749.
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.
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 |
Fazendo as contas serб, 128+32+16+8+4+1 = 189 , entгo para converter faremos o seguinte:
8 | 4 | 2 | 1 | 8 | 4 | 2 | 1 | |
1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 |
Caso tenha reparado nуs tiramos os seguintes valores, 128, 64, 32 e 16 e substituнmos por 8,4,2,1.
Para converter para Hexadecimal nуs separamos os 4 bits esquerdos dos 4 bits direito, ficarб assim:
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 |
Dessa forma 11 decimal = 0xB e 13 decimal = 0xD a conversгo final do binбrio: #10111101 й 0xBD
Entгo й isto, espero que o tutorial tenha sido ъtil.
Crйditos:
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