Source: http://lslwww.epfl.ch/pages/teaching/cours_lsl/intro/3.Entiers.pdf