http://www.win.tue.nl/~aeb/codes/binary-1.html