Désolé de répondre à ce topic un peu vieux mais si je suis tombé dessus, y'en a d'autres qui aimeraient peut-être avoir une réponse...
En effet, en électronique, non seulement "il existe d'autres logiques que la logique binaire pour les circuits d'ordinateurs", mais c'est en fait rarement la logique binaire qui est utilisée. Cela dit d'un point de vue théorique ces logiques sont généralement proches de la logique binaire classique
Pour s'en persuader il suffit de regarder le fichier du package std_logic_1164 qui fait partie des packages standard de VHDL (le langage le plus utilisé actuellement pour développer des circuits, mais on trouvera l'équivalent pour les autres langages de circuits). On trouvera ce fichier par exemple à l'adresse http://www.csee.umbc.edu/help/VHDL/packages/std_logic_1164.vhd à l'heure où j'écris ces lignes. C'est un package qui définit la manière standard de modéliser la logique dans les circuits (standard IEEE 1164) .
A remarquer en particulier dès le début du fichier la définition des valeurs dans cette logique:
TYPE std_ulogic IS (
'U', -- Uninitialized
'X', -- Forcing Unknown
'0', -- Forcing 0
'1', -- Forcing 1
'Z', -- High Impedance
'W', -- Weak Unknown
'L', -- Weak 0
'H', -- Weak 1
'-' -- Don't care
);
Tu remarqueras qu'ensuite les opérateurs classiques not, and, nand, or, xor sont définis pour cette logique... Tu verras dans le même fichier les tableaux and_table, or_table, xor_table et not_table qui sont les tables de vérité pour cette logique à 9 valeurs.
Pourquoi toutes ces valeurs et pas simplement '0' et '1' ? Tout simplement parce qu'un circuit est quelque chose de physique, dans lequel passent des courant électriques, avec des vitesses de propagation qui ne sont pas instantanées, une stabilisation du système qui prend un certain temps, etc... Et puis on peut aussi parfois laisser volontairement certaines parties du système dans des états inconnus parce que le maintenir obligatoirement dans un état '0' ou '1' serait compliqué, coûteux en énergie, voir impossible: imagine des circuits gérant un protocole de communication entre les différentes éléments électroniques d'une voiture; le(s) fils qui relient tout ça passe(nt) dans des états électriques différents, et par exemple s'il n'y a aucune communication en cours ça ne sert à rien de les maintenir pendant on ne sait combien de temps dans un état électrique précis; imagine seulement ce qui se passe au démarrage de la voiture: au départ l'état du système c'est complètement n'importe quoi et pourtant les circuits sont bien connectés donc il vaut mieux prévoir ça à l'avance parce que sinon ils vont faire n'importe quoi (il y a des éléments de mémoire dans un circuit, s'ils mémorisent n'importe quoi on est dans la merde)... Bref, les différents éléments du circuit passent dans plein d'états intermédiaires qu'on ne peut pas toujours négliger sous peine que le circuit fabriqué ne corresponde pas à ce qu'on avait simulé.
En développement de circuit on ne peut pas se permettre (contrairement au développement de logiciel) de "tester" les circuits en cours de développement pour "voir si ça marche", ça prendrait trop de temps et coûterait trop cher: on développe le circuit en faisant des simulations sur ordinateur, et quand on passe à la fabrication faut espérer que ça marche sinon les ingénieurs qui ont développés le circuit vont avoir les oreilles qui chauffent parce que ça coûtent vraiment cher à fabriquer ces trucs là. Faut imaginer que c'est un peu comme pour faire une photo avant qu'on ait le numérique: on fait d'abord un "négatif" puis on fabrique les circuits à partir de ce négatif, sauf que ce négatif vaut une vraie fortune, sans compter les coûts de mise en place de fabrication; ce négatif doit être rentabilisé en fabriquant beaucoup de circuits, donc pas question d'en fabriquer un pour "voir si ça marche". Surtout qu'il y a d'énormes taux de circuits qui partent à la poubelle à cause de problème de fabrication, genre poussières qui se déposent sur le circuit; même dans une salle blanche il reste beaucoup de poussières et les circuits actuels sont tellement miniaturisés qu'ils ne supportent pas; connaître les chiffres de rendement (le pourcentage de circuits qui ne partent pas à la poubelle, Yield en anglais) est très difficile car les fabricant ne communiquent pas là-dessus, mais j'ai déjà lu des articles scientifiques qui disent que 30% est un bon rendement pour de gros circuits, j'ai même lu parfois qu'avec les nouvelles technologies on pourrait passer en dessous des 10% de rendement; le marché des logiciels permettant de développer des circuits avec comme objectif d'améliorer le rendement (Design for Yield) est un gros marché actuellement.