Почему получился бесконечный цикл?
Очевидно, потому что переменная a никак не может принять значение, равное единице. Начните с 7, например. Сколько раз надо 7 разделить на 2, чтобы получить 1? Вот-вот.
Чтобы перевести в двоичную из десятичной достаточно сделать так
13..toString(2);