Eu sou novo em C # e não consegui encontrar o operador XNOR para fornecer esta tabela de verdade:
aba XNOR b ---------------- TTT TFF FTF FFT
Existe um operador específico para isso? Ou eu preciso usar! (A ^ B)?
Eu sou novo em C # e não consegui encontrar o operador XNOR para fornecer esta tabela de verdade:
aba XNOR b ---------------- TTT TFF FTF FFT
Existe um operador específico para isso? Ou eu preciso usar! (A ^ B)?
Respostas:
XNOR é simplesmente igualdade em booleanos; use A == B
.
É uma coisa fácil de perder, já que a igualdade não é comumente aplicada aos booleanos. E há idiomas em que isso não necessariamente funciona. Por exemplo, em C, qualquer valor escalar diferente de zero é tratado como verdadeiro, portanto, dois valores "verdadeiros" podem ser desiguais. Mas a pergunta foi marcadac #, que tem, digamos, booleanos bem comportados.
Observe também que isso não generaliza para operações bit a bit, onde você deseja 0x1234 XNOR 0x5678 == 0xFFFFBBB3
(assumindo 32 bits). Para isso, você precisa criar a partir de outras operações, como ~(A^B)
. (Nota: ~
não !
.)
!
operador pode ser usada para converter int
's para booleanos 'bem comportadas': !a==!b
.
!!
(são dois operadores lógicos "não") normaliza qualquer valor escalar para 0
ou 1
.
XOR = A ou B, mas não A & B ou nenhum (Não pode ser igual a [! =])
XNOR é, portanto, o oposto oposto e pode ser facilmente representado por == ou ===.
No entanto, casos não booleanos apresentam problemas, como neste exemplo:
a = 5
b = 1
if (a == b){
...
}
em vez disso, use o seguinte:
a = 5
b = 1
if((a && b) || (!a && !b)){
...
}
ou
if(!(a || b) && (a && b)){
...
}
o primeiro exemplo retornará false (5! = 1), mas o segundo retornará true (os valores de a [value?] eb [value?] retornam o mesmo booleano, true (value = not 0 / existe um valor )
o exemplo alt é apenas o portão invertido (a || b) &&! (a && b) (XOR)
Não, você precisa usar !(A^B)
Embora eu suponha que você possa usar sobrecarga de operador para criar seu próprio XNOR.
Você pode usar o ===
operador para o XNOR. Só você precisa converter a
e b
bool.
if (!!a === !!b) {...}
===
operador
===
o operador não-coercitiva é javascript ea dupla !!
antes de um valor em uma avaliação não é válido no c # quer
==
operandos booleanos ...