Source: http://www.cse.unsw.edu.au/~cs1917/15s2/lect/06_Binary4.pdf