Vou converter o quadro verdade para a notação do Java para você entender melhor e poder até testar.
true | false == true
true & false == false
| quer dizer: se pelo menos uma das alternativas for verdadeira, então é verdadeira.
& quer dizer: se todas as alternativas forem verdadeiras, então é verdadeira.
No seu caso:
true | false --> pelo menos uma das alternativas é true --> true
true & false --> uma das alternativas é false, portanto não pode ser true, já que isso exigiria que todas as alternativas fossem true. Logo é false.
[quote=entanglement]Vou converter o quadro verdade para a notação do Java para você entender melhor e poder até testar.
true | false == true
true & false == false
| quer dizer: se pelo menos uma das alternativas for verdadeira, então é verdadeira.
& quer dizer: se todas as alternativas forem verdadeiras, então é verdadeira.
No seu caso:
true | false --> pelo menos uma das alternativas é true --> true
true & false --> uma das alternativas é false, portanto não pode ser true, já que isso exigiria que todas as alternativas fossem true. Logo é false.
[/quote]
bacana sua explicação simples
me lembrei deste operador…vi num livro referindo como curto circuito que verifica as 2 possibilidades…
[quote=entanglement]Vou converter o quadro verdade para a notação do Java para você entender melhor e poder até testar.
true | false == true
true & false == false
| quer dizer: se pelo menos uma das alternativas for verdadeira, então é verdadeira.
& quer dizer: se todas as alternativas forem verdadeiras, então é verdadeira.
No seu caso:
true | false --> pelo menos uma das alternativas é true --> true
true & false --> uma das alternativas é false, portanto não pode ser true, já que isso exigiria que todas as alternativas fossem true. Logo é false.
[/quote]
Na verdade o pipe, |, é o operador or bitwise e o & é o and bitwise. O logic or em java é o || e o logic and é o &&.
[quote=matheuslmota]
Na verdade o pipe, |, é o operador or bitwise e o & é o and bitwise. O logic or em java é o || e o logic and é o &&.
true && false == false
true || false == true[/quote]
Na verdade o pipe é o operador or. O duplo pipe é o shorct circuit or. A diferença entre ambos é que o primeiro avalia sempre TODAS as condições e o segundo para assim que obtem um true pq já sabe que a resposta é true.
O mesmo para & e &&, com a diferença que para num false porque a resposta será false.
É importante saber isso porque:[code]
int i = 0;
int j = 2;
if ( i == 1 && j++ == 2){
//faz qq coisa
}
//j aqui terá o valor 2 porque como a primeira instrução é falsa, a segunda não é executada e j não é incrementado
[/code]
int i = 0;
int j = 2;
if ( i == 1 & j++ == 2){
//faz qq coisa
}
//j aqui terá o valor 3 porque apesar a primeira instrução ser falsa, todas as instruções são executadas e só depois é avaliado o resultado final da expressão
Amanha quero ir à praia e ao cinema. Só satisfaço a minha condição se for a praia e ao cinema. Ir apenas a um deles não é o que pretendo. Assim, só V & V é que dão V como resultado.
Amanha quero ir à praia ou ao cinema. Satisfaço a minha condição se for pelo menos a um deles. Assim, V | F dará V porque já tive o que queria.
[quote=pmlm][quote=matheuslmota]
Na verdade o pipe, |, é o operador or bitwise e o & é o and bitwise. O logic or em java é o || e o logic and é o &&.
true && false == false
true || false == true[/quote]
Na verdade o pipe é o operador or. O duplo pipe é o shorct circuit or. A diferença entre ambos é que o primeiro avalia sempre TODAS as condições e o segundo para assim que obtem um true pq já sabe que a resposta é true.
O mesmo para & e &&, com a diferença que para num false porque a resposta será false.
[/quote]
Esse raciocínio vem da definição.
Ou seja, são premissas que um matemático ou filósofo criou, estudando algum comportamento.
Toda matemática é baseada nessas premissas, que nada mais são do que princípíos simples, básicos, fortes, mas geralmente não comprováveis, que fundamentam toda uma teoria.
No caso da lógica, as premissas iniciais que fundamentaram a lógica foram duas:
a) Princípio da não contradição: Ou a coisa é, ou não é. Não existe outra valor que não seja V ou F.
b) Princípio do terceiro excluído: Portanto V ou F é sempre V. V e F é sempre F.
Com base nisso, cria-se toda lógica que você estuda para computação.
Quanto à lógica ternária, ela não tem nada a ver com a lógica aristotélica, e nada do que você viu de computação e citou aqui no fórum se aplica a ela.
Afinal, ela nega essas premissas ao dizer que pode haver um terceiro valor (e daí seu nome). Isso não se aplica a circuitos, nem à computação.
Geralmente, outro tipo de lógica exótica que você verá é a lógica difusa (fuzzy). Ela permite atribuir percentuais de certeza. É usada em computação pois pode representar o comportamento de sinais analógicos e filtros. É um bocado usada em IA para jogos e robótica também. Mas ela também não tem nada a ver com a lógica aristotélica.
Não tente comparar as lógicas entre si, pois embora pareçam similares à princípio, são criaturas completamente diferentes.
Essa foi boa, como diria minha professora, mais um dos misterios da matematica, mas cara eu olhando o link das portas logicas vi um fundamento pq se for um operador AND vc multiplica e se for um operador OR vc soma…
Cara engraçado na wikipedia la fala que se aplica a SQL e outro dia fiz uma prova de logica online e tinha alem de do verdadeiro, falso o desconhecido… e eu não tinha visto isso