21.06.2012, 02:20
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:
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:
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:
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:
Retornou 0001! Sim, 9 й impar.
-
-
-
Outro exemplo:
(12 & 1)
Transformar em binбrio:
Comparar bit a bit:
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:
Simples nгo й? Nгo й muito difнcil, precisa ler bem e entender. Dъvidas? Poste aqui!
Tutorial Criado por Bruno da Silva
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 |
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
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); // ??
Conversгo para Binбrios:
Quote:
10 -> 1010 15 -> 1111 |
(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:
Quote:
9 -> 1001 1 -> 0001 |
pawn Код:
1 & 0 = 0
0 & 0 = 0
0 & 0 = 0
1 & 1 = 1
-
-
-
Outro exemplo:
(12 & 1)
Transformar em binбrio:
Quote:
12 -> 1100 1 -> 0001 |
pawn Код:
1 & 0 = 0
1 & 0 = 0
0 & 0 = 0
0 & 1 = 0
-
-
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