Как быстро перевести число из восьмеричной системы сразу в шестнадцатеричную?
На ЕГЭ попалась задача: перевести число из восьмеричной системы прямо в шестнадцатеричную. Можно ли как-то напрямую, или обязательно сначала в десятичную, а потом в 16-ричную? Это же долго.
2 ответа
Напрямую между 8 и 16 удобной связи нет (8 = 2³, 16 = 2⁴, разные «размеры групп»). Поэтому идут через двоичную — это быстрее, чем через десятичную.
План: восьмеричное → разбиваешь каждую цифру на триаду (3 бита) → склеиваешь все биты в одну строку → перегруппировываешь биты на тетрады (4 бита) справа → каждую тетраду в hex.
Пример, 257₈:
2=010 5=101 7=111 → 010101111
разбиваем справа по 4: 0 1010 1111
→ 0=0(=один бит слева) 1010=A 1111=F
итог: AF...
Главная ловушка — при перегруппировке группировать с правого конца, а левую неполную группу дополнить нулями. Через десятичную тоже можно, но там два деления в столбик — дольше и ошибок больше.
Совет: всегда сначала собери ВСЕ биты в одну непрерывную строку, и только потом режь на тетрады. Если резать «по ходу», легко потерять или добавить лишний бит на стыке цифр.