Source: http://reds.heig-vd.ch/share/cours/syslog1/p01b_portelogique_boole.pdf