Você não está conectado. Conecte-se ou registre-se

(Programação) Operador &

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 (Programação) Operador & em Sab Ago 04, 2012 6:08 pm

[iPs]BrunoSilva

avatar
Administrador
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:
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:
Código:

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:
Código:

printf("%d", 10 & 15); // ??

Simples. O operador pega os valores de entrada e os transforma em binários:

Conversão para Binários:

10 -> 1010
15 -> 1111

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:
9 -> 1001
1 -> 0001

Comparar bit a bit:
Código:

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:
12 -> 1100
1 -> 0001

Comparar bit a bit:
Código:

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:
Código:
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



Última edição por [iPs]BrunoSilva em Dom Ago 05, 2012 8:51 am, editado 1 vez(es)

Ver perfil do usuário http://www.brunodasilva.com

2 Re: (Programação) Operador & em Dom Ago 05, 2012 7:39 am

opçerador? LOL

Ver perfil do usuário

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum