Ambidexter
Гуру
(2999)
16 лет назад
Когда основания двух систем счисления A и B связаны соотношением A = B^k (B в степени k), то можно переводить числа между ними, минуя десятичную систему, потому что один A-ричный разряд чётко соответствует k B-ричным разрядам.
Например, 16 = 2^4.
Пусть в 16-ричной системе у нас число E9. Хотим перевести в двоичную.
Берём и каждый разряд отдельно переводим в двоичный вид, отводя под него по 4 бита (т. е. 0 -> 0000, 1 -> 0001, 2 -> 0010, ..E -> 1110, F -> 1111). Получаем 11101001.
Чтобы получить восьмеричное представление (8 = 2^3), отсчитываем в двоичной записи по 3 разряда справа: 11 101 001 - и каждую группу двоичных разрядов превращаем в одну восьмеричную цифру: 351.
Обратный пример: есть восьмеричное число 572. Хотим перевести в 16-ричную.
Переводим в двоичную, превращая каждый разряд в три бита (0 -> 000, 1 -> 001, 2 -> 010, ..6 -> 110, 7 -> 111). Получаем 101111010.
Отсчитываем по 4 разряда справа: 1 0111 1010.
Интерпретируем каждую группу как шестнадцатеричную цифру: 17A.
Можно проверить вычисления на инженерном калькуляторе Windows =)