Source: http://tsi.ljf.free.fr/ATS/docs/S2I/CI3A/Hacheur2.pdf