En informatique, la porte de Toffoli, est une porte logique. Elle est réversible et universelle, ce qui signifie que n'importe quel circuit réversible peut être construit à partir de portes de Toffoli. Elle agit comme une porte NON à double contrôle, d'où le nom qu'on lui donne également de « controlled-controlled-not gate » (CCNOT).
Elle est due à Tommaso Toffoli.
150px|vignette|Représentation d'une porte de Toffoli
La porte de Toffoli est une porte logique à 3 bits en entrée et 3 bits en sortie. Si les deux premiers bits sont égaux à 1, le troisième bit est inversé, comme le montrent les représentations suivantes :
Autrement dit, pour trois bits en entrée a, b, et c nous obtenons en sortie a, b, et (c XOR (a ET b)).
Une porte logique L est réversible si, pour toute sortie y, il existe une entrée x unique telle que L(x) = y. Si une porte L est réversible, il existe une porte inverse L’ pour laquelle L’(y) = x. Par exemple, la porte NON est réversible, comme le montre sa table de vérité :
Par contre, la porte ET n'est pas réversible, les entrées 00, 01 et 10 ayant toutes trois pour sortie 0.
On s'est intéressé aux portes logiques réversibles dans les années 1960, parce que les portes réversibles dissipent moins de chaleur que les autres (en principe elles pourraient même à la limite n'en dissiper aucune). Dans une porte classique, les états d'entrée ne sont pas systématiquement conservés et nous obtenons généralement moins d'information en sortie qu'en entrée. Cette perte entraîne aussi une perte d'énergie, sous forme de chaleur, selon le principe de l'entropie en thermodynamique. Autrement dit, il faut de l'énergie pour permettre la transformation des bits d'information. Une porte réversible ne fait que modifier l'état des bits sans perte d'information, l'énergie est donc conservée.
Plus récemment, l'intérêt est venu de l'informatique quantique. La physique quantique impose l'utilisation de transformations réversibles, mais permet en contrepartie de travailler avec des états plus larges pour réaliser des calculs à l'aide du principe de superposition.