Operador & -
ipsBruno - 21.06.2012
Bem. Primeiramente olб a todos.
Hoje irei ensinar um tutorial que jб me pediram algumas vezes, mas nunca tive vontade de fazer. Finalmente vou explicar como funciona os famosos operadores bit a bit, ou operadores estruturados em portas lуgicas.
Primeiramente vocк deve saber que estes operadores usam instruзхes baseadas nas instruзхes booleanas.
Mentirosas e Verdadeiras. Falses e Trues. 0 e 1
Vamos aos operadores:
Operador AND
Primeiramente vocк precisa gravar as seguintes regras:
Quote:
A B (A & B)
0 0 0
0 1 0
1 0 0
1 1 1
|
Essas regras mudam de operador para operador. Mas basicamente operadores binбrios tem a mesma funзгo o que muda й a regra acima. A regra acima chama-se tabela verdade
http://pt.wikipedia.org/wiki/Tabela_verdade
Aqui outras regras:
http://pt.wikipedia.org/wiki/Porta_l%C3%B3gica
Em pawn:
pawn Код:
printf("%d", 0 & 0); // 0
printf("%d", 0 & 1); // 0
printf("%d", 1 & 0); // 0
printf("%d", 1 & 1); // 1
Resumindo a regra: Valores diferentes retorna falso. Valores que contenham zero em um dos parametros, retorna false. (Isto й, sу 1 & 1 pode retornar verdadeiro)
Pois bem, jб sabemos uma parte do operador &. Mas vem outra questгo.
Quando os nъmeros usados como parвmetros sгo diferentes de 1 e 0? Como 10 & 15
Como:
pawn Код:
printf("%d", 10 & 15); // ??
Simples. O operador pega os valores de entrada e os transforma em binбrios:
Conversгo para Binбrios:
Entгo usamos os prуprio nъmeros binбrios para checagem BIT a BIT dos valores (algarismo por algarismo | digito por digito do nъmero binбrio)
(10) (15)
1 1
0 1
1 1
0 1
Agora sу aplicar as regra da tabela
1 & 1? 1
0 & 1? 0
1 & 1? 1
0 & 1? 0
Resultado:
1010
Agora por ъltimo a funзгo transforma o nъmero binбrio 1010 em decimal. Ficando 10
Logo 10 & 15 = 10
-----------------------------------------------------------------------
Pra que serve?
Para manipular os valores usando lуgicas complexas. Exemplo
Saber se um nъmero й Impar:
Para saber se um nъmero й impar usando este operador basta usar (n & 1) sendo "
n" o nъmero a saber:
Ex:
9 & 1
Transformar em binбrio:
Comparar bit a bit:
pawn Код:
1 & 0 = 0
0 & 0 = 0
0 & 0 = 0
1 & 1 = 1
Retornou 0001! Sim, 9 й impar.
-
-
-
Outro exemplo:
(12 & 1)
Transformar em binбrio:
Comparar bit a bit:
pawn Код:
1 & 0 = 0
1 & 0 = 0
0 & 0 = 0
0 & 1 = 0
Retornou 0000 !! Nгo, 12
nгo й impar.
-
-
Entenderam?
_
** Importante - Dica
Para saber o valor binбrio de um nъmero basta fazer:
printf("%b", VALOR);
Ex:
pawn Код:
printf("%b", 15); // 1111
Simples nгo й? Nгo й muito difнcil, precisa ler bem e entender. Dъvidas? Poste aqui!
Tutorial Criado por Bruno da Silva
Re: Operador & -
ipsBruno - 21.06.2012
Todos operadores bit-a-bit sгo iguais, o que muda sу й a regrinha que eu postei lб encima.
Por exemplo (1 | 1) A regra jб torna outra. Pesquisem na internet "PORTAS LУGICAS" pois lб, vocкs pode encontrar a regra de todos operadores baseados em portas lуgicas enquanto outro tutorial nгo estiver pronto
http://pt.wikipedia.org/wiki/Porta_l%C3%B3gica
Enfim. Espero que tenham gostado.
Re: Operador & -
Jason` - 21.06.2012
Obrigado Bruno, serб de grande ajuda para mim e para muitos acredito eu.
+rep
Re: Operador & -
Dolby - 21.06.2012
Nossa cara,valeu,sempre tive duvidas em relaзгo a isto,mais com este tutorial vocк conseguiu esclarecer as duvidas que ainda tinha...
Re: Operador & -
Ades - 21.06.2012
Que lixo quer levar um
/zoa
Gostei muito obrigado estava atras disso
Re: Operador & -
cJMaster_ - 21.06.2012
Drakins, уtimo projeto me ajudarб muito!
e ajudarб tabem outras pessoas como disse o Pedro.
Re: Operador & -
ipsBruno - 21.06.2012
Tуpico atualizado. Vejam
Re: Operador & -
Juninho_Oakley - 21.06.2012
Belo trabalho drak apesar de eu nгo entender muito bem esses codigos...
Re: Operador & -
cJMaster_ - 21.06.2012
Sim , Obrigado por esclarecer ^^' Thanks!
Re: Operador & -
ipsBruno - 21.06.2012
Quote:
Originally Posted by Juninho_Oakley
Belo trabalho drak apesar de eu nгo entender muito bem esses codigos...
|
Com este tutorial entenderб!
Mas vai ter que ler bem