Gli operatori logici si comportano come operatori algebrici (algebra di bool appunto); una volta imparate le regole ti puoi divertire a risolvere le espressioni come quelle che ci davano alle medie!!!
L'utilità starebbe nel ricondursi a espressioni più semplici
o più 'economiche' (tempo oppure costo oppure complessità,...in ambito elettronico è ben più importante che in ambito software!)
Non so se la notazione ti piace comunque facciamo finta di usare i simboli &(AND), |(OR), ^(XOR), !(NOT)
Scrivo quello che hai postato
codice:
(a & b & c) ^ ( !(a&b) | !(a&c) | !(b&c) )
i)nota che !(a&b) = !a | !b
(a & b & c) ^ (!a | !b | !a | !c | !b | !c)
ii)inoltre !a | !a è ancora uguale a !a quindi
(a & b & c) ^ (!a | !b | !c)
per la i) riscriviamo (!a | !b | !c) = !(a & b & c)
poniamo per semplicità x = (a & b & c) quindi
tutto si riconduce a
x^(!x)
p XOR q è FALSO quando p e q sono uguali ma x non potrà
mai essere uguale al suo negato quindi l'espressione
è sempre vera qualsiasi sia il valore di x quindi
qualsiasi sia il valore di a,b e c
uff...
Bei manuali di piaccapì che leggi comunque...complimenti!