Binбrios & Hexadecimal -
RebeloX - 06.09.2013
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 dig
it) , 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
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:
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)
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.
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.
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.
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
Sabemos que B tem valor de 11, logo ficarб:
Entгo serб: 11 * 16 + 9 * 1 = 185
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.
Fazendo as contas serб, 128+32+16+8+4+1 = 189 , entгo para converter faremos o seguinte:
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:
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:- 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
Re: Binбrios & Hexadecimal -
.FuneraL. - 06.09.2013
Boa, bem explicado, precisava saber algumas coisas sobre isto
Re: Binбrios & Hexadecimal -
Lуs - 06.09.2013
Esqueceu de falar sobre representaзгo de nъmeros negativos e armazenamento de floats.
Уtimo tutorial, se bem que nгo tem muito uso dele no PAWN, alйm dos bits...
Re: Binбrios & Hexadecimal -
RebeloX - 06.09.2013
Quote:
Originally Posted by .FuneraL.
Boa, bem explicado, precisava saber algumas coisas sobre isto 
|
Obrigado Funeral
Quote:
Originally Posted by Lуs
Esqueceu de falar sobre representaзгo de nъmeros negativos e armazenamento de floats.
Уtimo tutorial, se bem que nгo tem muito uso dele no PAWN, alйm dos bits...
|
Sim Lуs, apesar de ainda nгo saber sobre os nъmeros negativos e armazenamento de floats, achei que nгo valeria muito a pena estar a explicar tudo isso.
Obrigado
Re: Binбrios & Hexadecimal -
WLSF - 06.09.2013
Nгo li, mas se for como eu tiver pensando, parabйns !
Minha primeira prova de sistemas foi assim, depois a gente jб foi desenvolver pras protoboards, й emocionante.
Quote:
Originally Posted by Lуs
Esqueceu de falar sobre representaзгo de nъmeros negativos e armazenamento de floats.
Уtimo tutorial, se bem que nгo tem muito uso dele no PAWN, alйm dos bits...
|
Sу que ai ele teria que explicar todos os sistemas, porque sу um seria ruim.
C1, C2 e MS
Re: Binбrios & Hexadecimal -
Lуs - 06.09.2013
Quote:
Originally Posted by Willian_Luigi
Sу que ai ele teria que explicar todos os sistemas, porque sу um seria ruim.
C1, C2 e MS
|
Sim, mas essa seria a intenзгo, eu acho o complemento de 2 mais fбcil para ser explicado.
Re: Binбrios & Hexadecimal -
WLSF - 06.09.2013
Quote:
Originally Posted by Lуs
Sim, mas essa seria a intenзгo, eu acho o complemento de 2 mais fбcil para ser explicado.
|
o MS e o C1 sгo mais simples e fбceis de explicar, cara.
(MS) sу muda o ultimo bit (0) - positivo (1) - negativo
(C1) muda o ultimo bit e inverte a sequкncia lуgica, oque й (0) vira (1) e oque й (1) vira (0)...
O C2 tu ainda tem que somar com 1 depois.
Re: Binбrios & Hexadecimal -
Lуs - 06.09.2013
Quote:
Originally Posted by Willian_Luigi
o MS e o C1 sгo mais simples e fбceis de explicar, cara.
(MS) sу muda o ultimo bit (0) - positivo (1) - negativo
(C1) muda o ultimo bit e inverte a sequкncia lуgica, oque й (0) vira (1) e oque й (1) vira (0)...
O C2 tu ainda tem que somar com 1 depois.
|
Eu acho o complemento de 2 bem mais fбcil, apenas minha opiniгo. Eu sei como eles funcionam.
Re: Binбrios & Hexadecimal -
WLSF - 06.09.2013
Quote:
Originally Posted by Lуs
Eu acho o complemento de 2 bem mais fбcil, apenas minha opiniгo. Eu sei como eles funcionam.
|
Eu sei que vocк sabe, aheuhaeu, mas deixa ai que quem olhar tambйm jб vai entendendo melhor...
5bjs
Re: Binбrios & Hexadecimal -
[THs]ShadoW - 07.09.2013
Extremamente ъtil, embora nгo seja muito utilizado em Pawn, bom trabalho