Source: https://cagnazzo.wp.imt.fr/files/2013/05/compression_03_lossless_coding.pdf