Ir para conteúdo
Fórum Script Brasil
  • 0

Não To Entendendo Esta Expressão...


Guest Julian

Pergunta

ola..

to com um problema pra entender esse tipo de expressao

tipo, se eu pegar 3 and 2 o resultado é 2, porque????

se eu pega tb 6 and 2 o resultado tb é 2, ou tb 7 and 2...queria intender o porque disso...brigadu..

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0

tipo...existe algumas expressões no visual basic que são assim

X and Y, essa expressão volta um resultado (como se fosse 2 + 2, o resultado é 4)...

oque eu não intendo o qual o tipo de calculo que se faz nessa expressão para de ter um resultado...

tipo eu já vi um exemplos de "ifs"

if (4 and 2) = 2 then 
 conteudo aqui
end if

nesse exemplo acima o resultado da condição vai se "FALSO", e é isso q quero saber, o porque q é FALSO...deu pra intende agora.....

eu não to intendendo esse tipo de expressão.....tem outros como X ORY e entre outros....mais se me explicarem um já ta valenu....brigadu...

Link para o comentário
Compartilhar em outros sites

  • 0

if (4 and 2) = 2 then

conteudo aqui

end if

ta dando falso porque o 4 e o 2 tem que ser = a 2

Se você quer somar o conteudo de 4 e 2 então você tem que fazer:

if (4 + 2)=2 then

conteudo

end if

mesmo assim 4 +2 = 6, enta vai retornar falso do mesmo jeito

Link para o comentário
Compartilhar em outros sites

  • 0

No caso, o que ocorre ao fazer é 4 AND 2 é a operação de AND com cada um dos bits. Creio que você já conheça as operações booleanas, certo? Se não, vai uma pequena explicação: a operação de AND (E) entre dois valores booleanos (ou seja, entre VERDADEIRO e FALSO e quaisquer combinações possíveis), vai retornar VERDADEIRO somente se os dois valores forem VERDADEIROS. Exemplo:

VERDADEIRO E FALSO = FALSO

FALSO E VERDADEIRO = FALSO

FALSO E FALSO = FALSO

VERDADEIRO E VERDADEIRO = VERDADEIRO

Sacou? Agora, vamos transformar os valores 4 e 2 em binários:

4 = 100

2 = 10

Lembrando que 0 é FALSO e 1 é verdadeiro, vamos fazer a operação da direita para a esquerda:

0 E 0 = 0

0 E 1 = 0

1 E 0 = 0

Ou seja, tudo falso. Formando um valor decimal com os três resultados (000) resultará em 0. Agora vamos fazer com 6 e 2:

6 = 110

2 = 10

0 E 0 = 0

1 E 1 = 1

1 E 0 = 0

Formando um valor decimal com 010 resultará em 2. Por isso, (6 AND 2) retorna 2. E se você fizer: (6 AND 2) = 2, a expressão será verdadeira, pois se a desenvolvermos teremos (2) = 2.

O propósito básico de utilizar expressões assim é saber se um valor binário está contido em outro, ou a intersecção entre eles, ou até mesmo para saber se eles são iguais. Certo? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

ola....

Graymalkin muito obrigado pela ajuda...

cara só q ainda to com duvidas...tipo

se disse q 6 = 110 e 2 = 10, da onde surgiram esse 110 e esse 10?

outra duvida é...

O propósito básico de utilizar expressões assim é saber se um valor binário está contido em outro, ou a intersecção entre eles, ou até mesmo para saber se eles são iguais. Certo?

essa parte eu não intendi..tipo, o que seria esse "para saber se um valor esta condido ou em interseção com outro", eu não saquei muito bem onde é q a expressão mostra q um numero esta ou não contido ou em interseção em outro...tipo a resolução da expressão que você monto fico bem explicada só q eu ainda não intendi a real utilidade dela, tem como se faze um exemplo bem simplesinho pra mim ve de onde eu posso usar esse tipo de expressão? e se não for pedir muito gostaria de um exemplo com o operador "oR" tb...brigadaoo

Link para o comentário
Compartilhar em outros sites

  • 0

Grande Graymalkin!

Como sempre salvando nossa patria, mandou bem na explanation!

confesso q manjo muito pouco de operadores lógicos. so o básico mesmo, mas não poderia deixar de pelo menos tentar ajudar, beleza?

Abrçs a todos

---Ozi---

Link para o comentário
Compartilhar em outros sites

  • 0
Grande Graymalkin!

Como sempre salvando nossa patria, mandou bem na explanation!

confesso q manjo muito pouco de operadores lógicos. so o básico mesmo, mas não poderia deixar de pelo menos tentar ajudar, beleza?

Abrçs a todos

---Ozi---

Sim, claro. O importante é tentar ajudar. wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Antes de explicar o OR, vale uma pequena explicação de como o 4 virou 100 e o 2 virou 10. Nós, atualmente, utilizamos o sistema decimal em nosso dia-a-dia. Esse sistema consiste em 10 algarismos (daí o nome "decimal"), a saber: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Todos os valores imagináveis, dentro do sistema decimal, serão formados através da mistura destes algarismos. Agora, imagine que, ao invés de utilizarmos 10 algarismos, nós quiséssemos utilizar apenas 2 algarismos (0 e 1, apenas). Como representaríamos todos os valores possíveis (2, 10, 25, 92, 1024, 2999, etc.) utilizando apenas dois algarismos? Do mesmo jeito que fazemos com o sistema decimal: fazendo combinações com esses dois algarismos. Exemplos (a primeira coluna é o valor decimal e a segunda é o valor binário):

0 = 0

1 = 1

2 = 10 (lê-se "um zero")

3 = 11 (lê-se "um um")

4 = 100 (lê-se "um zero zero")

5 = 101 (lê-se "um zero um")

6 = 110

7 = 111

8 = 1000

9 = 1001

25 = 11001

92 = 1011100

1024 = 10000000000

2999 = 101110110111

Como você pode notar, qualquer valor decimal pode ser representado em binário (e vice-versa). Além do sistema binário existem ainda os sistemas hexadecimal (que utiliza 16 algarismos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F) e octal (que utiliza 8 algarismos, sendo de 0 a 7). E é claro, você pode criar seu próprio sistema também, se quiser. Não vou entrar em detalhes em como se faz a conversão entre as bases, porque provavelmente, em algum momento, você vai aprender isso em sala de aula. Aliás, a Álgebra de Boole (ou Álgebra Booleana), na qual você verá os operadores AND, OR, XOR, NOT, etc., também deverá aparecer em algum momento.

Agora vamos ao caso do operador OR. A operação booleana OR (OU) retorna VERDADEIRO se qualquer um dos operandos for VERDADEIRO. As possibilidades são:

VERDADEIRO OU FALSO = VERDADEIRO

FALSO OU VERDADEIRO = VERDADEIRO

VERDADEIRO OU VERDADEIRO = VERDADEIRO

FALSO OU FALSO = FALSO

A operação de OR entre dois valores decimais faz exatamente a mesma coisa que a operação de AND que citei antes (ou seja, opera bit a bit). Exemplo:

2 = 10

4 = 100

0 OR 0 = 0

1 OR 0 = 1

0 OR 1 = 1

No caso, o valor 110 em binário corresponde ao valor 6 em decimal. Note que o resultado de 4 OR 2 será 6 e fica parecendo que o resultado é o mesmo de 4+2. Nesse caso é verdade, mas nem sempre o será. Um outro exemplo (7 OR 5):

7 = 111

5 = 101

1 OR 1 = 1

1 OR 0 = 1

1 OR 1 = 1

No caso acima, o resultado será o próprio 7.

Sacou? wink.gif

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

olá...

Graymalkin..cara você é professor?, meu você explico muitoo bem cara..eu intendi legal a parte de numeros binarios, tipo, o porque q o 2 vale 10 em binario, ou o 7 vale 111....brigadu..

só q ainda não intendi o porque de se usar este tipo de expressão seja ela OR, AND OU qualquer uma, tipo agente sabe q quando se usa o operador "+" é para adionar um numero ao outro, ou quando tiramos a raiz quadrada de um numero X, sabemos q é pra se saber qual numero q multiplicado por ele mesmo é igual a X...mais quando usamos esse tipo de expressão X and Y (ou OR) não intendo qual seria a utilidade...

bom acho q é só isso q tenho duvida...cara brigadu por todas as respostas...valeu..

Link para o comentário
Compartilhar em outros sites

  • 0

Graymalkin..cara você é professor?

Pretendo ser... biggrin.gif

meu você explico muitoo bem cara..eu intendi legal a parte de numeros binarios, tipo, o porque q o 2 vale 10 em binario, ou o 7 vale 111....brigadu..

Obrigado e de nada. tongue.gif

só q ainda não intendi o porque de se usar este tipo de expressão seja ela OR, AND OU qualquer uma, tipo agente sabe q quando se usa o operador "+" é para adionar um numero ao outro, ou quando tiramos a raiz quadrada de um numero X, sabemos q é pra se saber qual numero q multiplicado por ele mesmo é igual a X...mais quando usamos esse tipo de expressão X and Y (ou OR) não intendo qual seria a utilidade...

Sim, a utilização de tais expressões possuem situações específicas (não tão gerais, pelo menos no dia-a-dia, quanto as operações aritméticas, como você citou). Uma situação dessas é quando você possui um campo "flag". Um campo "flag" (do inglês, "bandeira") é utilizado para sinalizar algo (esse "algo" você pode imaginar como "opções" a serem habilitadas ou desabilitadas). Olhemos agora um número binário arbitrário:

1011100

O que você vê? Uma sequência de 0s e 1s, você poderá pensar. E sim, de fato é isso. Mas, a principal característica de um número binário é justamente o fato de que só existem dois valores possíveis (ou 0 ou 1). Como já vimos antes, esse 0 pode ser chamado de FALSO e o 1 pode ser chamado de VERDADEIRO (na lógica formal), mas não podemos atribuir novos significados a eles? Sim, claro que podemos: chamemos 0 de DESLIGADO e 1 de LIGADO. O que temos agora? Uma sequência de "interruptores" (sim, interruptores como os que você usa para ligar a lâmpada do seu quarto ou da sua sala). Na sequência acima o primeiro bit está DESLIGADO (estou começando da direita para a esquerda) e o último bit está LIGADO. Note que estou chamando os bits pela ordem, porém formalmente o primeiro bit é chamado de bit0 e assim por diante (sempre començando do 0). No caso aqui estarei começando sempre por 1 (primeiro), pois fica mais fácil de se visualizar. Então, como posso saber se o terceiro bit está ligado ou desligado? Através de uma operação de AND:

1011100

AND

0000100

=

0000100

Como a operação de AND só vai retornar 1 se ambos os valores forem 1, ao realizar a operação com o valor binário 100 eu sei que se o resultado final for o próprio valor é porque esse bit está ligado. Se eu fizesse:

1011100

AND

0000010

=

0000000

O resultado final seria 0, e eu saberia que o 2º bit está desligado. Mais um exemplo:

1011100

AND

0001000

=

0001000

O resultado final bate com o valor testado, por isso eu sei que o quarto bit está ligado. Entendido?

Agora, voltemos aos números decimais. Aquela sequência arbitrária é o valor 92 em decimal. Se eu quisesse saber quais bits estão ligados ou desligados, bastaria que eu fizesse os testes:

92 AND 1 = 0

92 AND 2 = 0

92 AND 4 = 4

92 AND 8 = 8

92 AND 16 = 16

92 AND 32 = 0

92 AND 64 = 64

Note que os resultados *só* são diferentes de 0 nos bits cujo valor é 1 (terceiro, quarto, quinto e sétimo bits). Por que 1, 2, 4, 8, 16, 32 e 64? Veja a tabela abaixo:

1 = 0000001

2 = 0000010

4 = 0000100

8 = 0001000

16 = 0010000

32 = 0100000

64 = 1000000

As potências de 2 são os valores mais utilizados em operações binárias porque são compostos por apenas um bit ligado e em uma posição específica.

Voltemos agora ao caso de um campo "flag". Como eu disse antes, um campo "flag" sinaliza algo e podemos encarar um valor binário como uma sequência de "interruptores". Por isso, *no mínimo* aí (para o valor 92) temos 7 "opções" (a quantidade de bits do valor 92) que podemos desligar e ligar (imagine um painel com 7 interruptores e 7 lâmpadas correspondentes). Porém, nada impede ainda que combinações de interruptores possam também ter efeitos específicos (ao ligar dois determinados interruptores uma determinada lâmpada pode piscar rapidamente; ao ligar determinados três interruptores uma determinada lâmpada pode piscar lentamente; e assim por diante). Como temos 7 bits possíveis sendo que cada um pode assumir 2 valores (0 ou 1), o total de combinações possíveis é: 2^7 (2 elevado à 7ª potência), o que resulta em 128 combinações! Veja que coisa magnífica: com apenas um valor (92) eu posso representar 128 situações diferentes! Listar todas elas aqui seria extremamente exaustivo (e totalmente desnecessário), por isso vou colocar apenas alguns exemplos:

valor = 92

if valor and 1 = 1 then 'Se o primeiro bit estiver ligado
  nome = "Julian"
else                    'Se o primeiro bit estiver desligado
  nome = "Junior"
endif

if valor and 2 = 2 then 'Se o segundo bit estiver ligado
  nome = "Remy"
else                    'Se o segundo bit estiver desligado
  nome = "Logan"
endif

if valor and 4 = 4 then 'Se o terceiro bit estiver ligado
  nome = "Scott"
else                    'Se o terceiro bit estiver desligado
  nome = "Alex"
endif

if (valor and 2 = 2) and (valor and 4 = 4) then 'Se o segundo e o terceiro bits estiverem ligados SIMULTANEAMENTE
  nome = "Warren"
else                    'Se o segundo OU o terceiro bits (ou ambos) estiverem desligados 
  nome = "Henry"
endif

if (valor and 2 = 2) or (valor and 8 = 8) then 'Se o segundo OU o quarto bits (ou ambos) estiverem ligados 
  nome = "Piotr"
else                    'Se o segundo E o quarto bits estiverem desligados 
  nome = "Robert"
endif
Note que nos dois últimos Ifs eu demonstrei como pode-se combinar, de forma simples, os resultados a fim de obter outras possibilidades (muitas outras combinações podem ser utilizadas). Note que até agora só utilizei o AND para explicar o caso, mas o operador OR também é extremamente útil no caso. Mais precisamente, o AND serve para *testar* e o OR serve para *definir*. Se quiser ligar os três primeiros bits, eu posso simplesmente fazer:
valor2 = 1 or 2 or 4
Como sabemos o resultado de 1 OR 2 OR 4 vai ser 7 e que o valor binário de 7 é 111. Para as potências de 2 aquela idéia de somar vai ser sempre verdadeira, por isso o resultado acima seria o mesmo que:
valor2 = 1 + 2 + 4
Sabendo isso, como eu poderia saber se dois bits estão ligados simultaneamente de uma forma mais prática do que a que utilizei nos exemplos acima? Veja abaixo:
valor = 92
valor2 = 4 or 8 'que é o mesmo que 4+8, ou seja, 12
if valor and valor2 = valor2 then
  'o terceiro E o quarto bits estão ligados
else
  'o terceiro OU o quarto bits (ou ambos) estão desligados
endif

Apesar de não utilizarmos extensivamente essas operações na programação do dia-a-dia, é possível citar alguns exemplos: tags de arquivos MP3, onde várias informações sobre as informações contidas dentro do arquivo são expostas em flags; a propriedade Flags do controle CommonDialog (bastante utilizado no VB) que possui várias opções "extras" que podem ser ativadas; e a criptografia (na qual se utiliza o operador XOR, o "OU eXclusivo"). Esses são exemplos que imaginei agora, mas devem haver outros. É interessante também salientar que as operações lógicas estão ocorrendo o tempo todo e de forma intensa no seu computador (e em milhares de outros equipamentos eletrônicos). Calculadoras, por exemplo, fazem a operação de "soma" através do operador OR. Seu computador sabe que você apertou uma tecla enquanto segurava o SHIFT, o ALT ou o CONTROL através de um bit que é alterado nesses casos (o que pode ser testado com um AND). Seu computador só está recebendo dados da internet no momento (e é capaz de se comunicar com outros computadores em uma rede local) devido a uma operação de AND que é realizada entre o endereço IP de destino e a sub-máscara. Para uma computador acessar um determinado site ou serviço na grande teia mundial, seus dados irão trafegar por vários roteadores que estarão realizando operações de AND a fim de decidir para onde irão enviar os dados. Discos rígidos e softwares implementam "espelhamentos" ou "sombreamentos" (que é ter uma cópia dos dados de um disco em outro, de forma quase simultânea) guardando apenas determinados bits em um disco e em outro, de forma a reconstituir os bits faltantes (através das operações lógicas AND e OR) caso um dos discos pare de funcionar. Magnífico esse nosso mundo de bits e bytes, não? biggrin.gif

Nossa, me empolguei e escrevi muito... tongue.gif Espero que você tenha paciência para ler até o final.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Seria Introducao a logica digital bom no meu curso Informatica industrial é assim que se chama pois estou estudando as portas logicas OR, AND, NAND, NOR, XOR, ENOR pois tudo que você falou ai eu aprendi isso neste curso

Link para o comentário
Compartilhar em outros sites

  • 0
Seria Introducao a logica digital bom no meu curso Informatica industrial é assim que se chama pois estou estudando as portas logicas OR, AND, NAND, NOR, XOR, ENOR pois tudo que você falou ai eu aprendi isso neste curso

Ah tá, é isso aí mesmo então. Eu aprendi isso aí quando se falou de portas lógicas (no 2º Grau) e depois em Matemática, quando se falou de Lógica (ou Álgebra de Boole).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Mas então em sua escola tinha curso tecnico junto? blink.gif

Pois na minha não somente matematica que eu vi Algebra Boole wink.gif

Sim, eu fiz o Ensino Médio (2º Grau) de Técnico em Informática. Porém, como a lei tinha mudado no mesmo ano que comecei, tive também todas as matérias de Formação Geral junto com as matérias técnicas.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Sim, eu fiz o Ensino Médio (2º Grau) de Técnico em Informática. Porém, como a lei tinha mudado no mesmo ano que comecei, tive também todas as matérias de Formação Geral junto com as matérias técnicas.

Abraços,

Graymalkin

Po legal!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...