Operadores lógicos Operadores lógicos servem para realizar operações entre variáveis ou expressões do tipo Boolean, cujo resultado seja Boolean, Quase em todas as linguagens de programação existem algumas instruções similares. Trata-se dos operadores lógicos, And, Or, Not e Xor. Traduzindo para o português os três primeiros operadores é, (E, Ou, Não). Se tivermos conhecimento de lógica e números binários, não será difícil identificar e entender o seu comportamento. Estes operadores servem para unir condições, exemplo, Cor é Amarelo e não é Branca. Cor = "Amarela" And Not Cor = "Branca" No caso de Xor é um pouco mais difícil de entender já que se trata de uma operação especial, chamada OR exclusiva (Ou exclusiva). O resultado de uma operação Xor é verdadeira quando os dois operando são diferentes e falso quando os dois operando são iguais. Na prática só devemos utilizá-la quando estivermos seguro que conhecemos perfeitamente seu funcionamento. Operador Exemplo Descrição And 1 And 2 Not Not 1 Calcula o "Não" lógico do valor binário de um Número. Or 2 Or 3 Calcula o "Ou" matemático do valor binário de dois números. Xor 5 Xor 5 Calcula o "Exclusivo-Ou" matemático do valor binário de dois números. Calcula o "E" matemático do valor binário de dois números. Os números podem ser, Variant, Boolean, Byte, Short, Integer e Long. Operador lógico And Resultado = Expressao AND Expressao Calcula o "E" lógico de duas expressões booleanas, ou o "E" matemático de dois números inteiros. Em caso de duas expressões booleanas, uma operação lógica "E" é realizada. No caso de dois números inteiros, uma operação numérica "E" é realizada. Os resultados booleanos retornados por este operador é mostrado na tabela a seguir: A B A And B False False True True False True False True False False False True Print Print Print Print False Or False False Or True True Or False True Or True 'False 'False 'False 'True Uma operação And entre dois valores numéricos inteiros, retorna um valor inteiro. Cada bit correspondente dos valores especificados são combinados de acordo com a tabela a seguir: A B A And B 0 0 1 1 0 1 0 1 0 0 0 1 Print Bin(33, 16) '0000000000100001 Print Bin(51, 16) '0000000000110011 Print Bin(33 And 51, 16)'0000000000100001 4 O operador "E" numérico pode ser usado para testar o padrão de bits de um número. Também pode ser usado para mascarar bits selecionados de um número. A tabela a seguir apresenta alguns exemplos. Expressão Descrição 5 AND 10 = 0 5 = binário 0101 10 = binário 1010 Então 5 AND 10 = 0 5 AND -10 = 8 5 = binário 00000000000000000000000000000101 -10 = binário 11111111111111111111111111110110 Então 5 AND -10 = 4 (binário 100) 10 AND -10 = 4 10 = binário 00000000000000000000000000001010 -10 = binário 11111111111111111111111111110110 Então 10 AND -10 = 2 (binário 10) O sistema binário ou base 2, é um sistema de numeração posicional, em que todas as quantidades são representadas com base em dois números, zero e um. Binário Valor Posição 1 1 1 1 1 1 1 64+ 32+ 16+ 8+ 4+ 2+ 1 7 6 5 4 3 2 1 Podemos verificar que lendo da direita para a esquerda, existe um incremento para o dobro do valor do bit anterior. Operador lógico Or Resultado = Expressao Or Expressao Calcula o "Ou" lógico de duas expressões booleanas, ou o "Ou" matemático de dois números inteiros. Em caso de duas expressões booleanas, uma operação lógica "Ou" é realizada. No caso de dois números inteiros, uma operação numérica "Ou" é realizada. Os resultados booleanos retornados por este operador é mostrado na tabela a seguir: A B A Or B False False True True False True False True False True True True Gambas Print Print Print Print False Or False False Or True True Or False True Or True 'False 'True 'True 'True O operador Or numérico leva dois valores inteiros e retorna um valor inteiro. Cada bit correspondente dos valores especificados são combinados de acordo com a tabela a seguir: A B A Or B 0 0 0 0 1 1 1 0 1 1 1 1 Gambas Print Bin(33, 16) '0000000000100001 Print Bin(51, 16) '0000000000110011 Print Bin(33 Or 51, 16) '0000000000110011 5 Operador lógico Xor Resultado = Expressao Xor Expressao Calcula o Or exclusivo de duas expressões booleanas, ou o Or exclusivo de dois números inteiros. O operador Xor liga duas expressões booleanas e retorna um valor verdadeiro ou falso. Os resultados retornados por esta operação é mostrado na tabela a seguir: A B A Xor B False False True True False True False True False True True False Print Print Print Print False Xor False False Xor True True Xor False True Xor True 'False 'True 'True 'False O operador Xor numérica liga dois valores inteiros e retorna um valor inteiro. Cada bit dos valores especificados correspondentes são combinados de acordo com a seguinte tabela: A B A Xor B 0 0 0 Print Bin(33, 16) '0000000000100001 0 1 1 Print Bin(51, 16) '0000000000110011 1 0 1 Print Bin(33 Xor 51, 16)'0000000000010010 1 1 0 Operador lógico Not Resultado = Not Expressão Calcula o não lógica de uma expressão. O operador lógico Not inverte o valor de uma expressão booleana. A Not A True False False True Print Not True Print Not False 'False 'True O operador Not numérico leva um valor inteiro e retorna um valor inteiro. O operador realmente inverte cada bit da expressão, como mostrado na tabela a seguir: A Not A 0 1 1 0 Print Bin(11, 10) '0000001011 Print Bin(Not 11, 10) '1111110100 Se Expressão for uma String ou um objeto. Retorna True se Expressão é nula. Print Not "" 'True Retorna False se Expressão não é nula. Print Not "Gambas" 'False Exemplos. 6 Exemplos 7