Source: https://courses.cs.washington.edu/courses/cse370/09wi/LectureSlides/04-LogicGatesCanonical.pdf