Вот как-то так. Я в одной программе и 1) и 2) реализовал, там что не так будет-подправишь.
Данный вопрос уже был поэтому отвечу так же :
У 10-ой алфавит: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 = 10 цифр => основание равно 10.
<span>У 2-ой алфавит: 0, 1 = 2 цифры => основание равно 2. </span>
Так как 8 и 16 являются целыми степенями 2, то для перевода из двоичной системы в восьмеричную и шестнадцатеричную нужно сгруппировать двоичные цифры по 3 или 4 соответственно (в триады и тетрады), и каждая группа будет обозначать ровно одну цифру новой системы. Точно так же для перевода из десятичной в "сторичную" цифры группировались бы по две. В случае нехватки цифр слева можно добавлять нули.
N=2^i
128=2^i
I = 7 бит
20*7=140бит
По моему так)