Source: https://www.cs.princeton.edu/courses/archive/spr15/cos217/lectures/03_NumberSystems.pdf