I could not find an XNOR operator to provide this truth table:
a b a XNOR b ---------------- T T T T F F F T F F F T
Is there a specific operator for this? Or I need to use !(A^B)?
I could not find an XNOR operator to provide this truth table:
a b a XNOR b ---------------- T T T T F F F T F F F T
Is there a specific operator for this? Or I need to use !(A^B)?
XNOR is simply equality on booleans; use A == B
.
This is an easy thing to miss, since equality isn't commonly applied to booleans. And there are languages where it won't necessarily work. For example, in C, any non-zero scalar value is treated as true, so two "true" values can be unequal. But the question was tagged c#, which has, shall we say, well-behaved booleans.
Note also that this doesn't generalize to bitwise operations, where you want 0x1234 XNOR 0x5678 == 0xFFFFBBB3
(assuming 32 bits). For that, you need to build up from other operations, like ~(A^B)
. (Note: ~
, not !
.)
!
operator can be used to convert int
's to "well-behaved" booleans: !a==!b
. –
Sulfonal !!
(that's two logical "not" operators) normalizes any scalar value to 0
or 1
. –
Seismism XOR = A or B, but Not A & B or neither (Can't be equal [!=])
XNOR is therefore the exact oppoiste, and can be easily represented by == or ===.
However, non-boolean cases present problems, like in this example:
a = 5
b = 1
if (a == b){
...
}
instead, use this:
a = 5
b = 1
if((a && b) || (!a && !b)){
...
}
or
if(!(a || b) && (a && b)){
...
}
the first example will return false (5 != 1), but the second will return true (a[value?] and b[value?]'s values return the same boolean, true (value = not 0/there is a value)
the alt example is just the reversed (a || b) && !(a && b) (XOR) gate
No, You need to use !(A^B)
Though I suppose you could use operator overloading to make your own XNOR.
I there is a few bitwise operations I don't see as conventional in the whole discussion. Even in c, appending or inserting to the end of a string, all familiar in standard IO and math libs. this is where I believe the problem lies with not and Xnor, not familiar with python but I propose the following example
function BitwiseNor(a as integer)
l as string
l=str(a)
s as string
For i=len(l) to 0
s=(str(i)+"="+Bin(i)) //using a string in this example because binary or base 2 numnbers dont exists in language I have used
next i
endfunction s
function BitwiseXNor(a as integer,b as integer)
r as integer
d as integer
c as string
c=str(BitwiseOr(a,b))
r=(val(c,2)) //the number to in this conversion is the base number value
endfunction r
You can use ===
operator for XNOR.
Just you need to convert a
and b
to bool.
if (!!a === !!b) {...}
===
operator –
Allogamy ===
the non-coercive operator is javascript and the double !!
before a value in an evaluation is not valid in c# either –
Coridon © 2022 - 2024 — McMap. All rights reserved.
==
for boolean operands... – Glennglenna