Теперь немного узнав о системах счисления хорошо бы освоить перевод чисел из одной системы в другую. Начнем с перевода десятичного числа в двоичное. Для отображения чисел в разных системах используются нижние индексы, например, число10 - десятичное число, число2 - двоичное число, число16 или числоH - 16-тиричное число.
Для перевода десятичного числа в двоичное нужно десятичное число делить на 2 до получения минимального остатка. При делении десятичного числа на 2 образуются остатки, равные 0 или 1. Первый остаток будет младшим разрядом. Последний остаток будет предпоследним перед старшим разрядом. Результат деления последнего числа является старшим разрядом и он всегда равен 1. Например, переведем малюхонькое число 21 в двоичный код.
21/2=10
Остаток 1
10/2=5
Остаток 0
5/2=2
Остаток 1
2/2=1
Остаток 0
Последнее число 2/2=1. Эта единица идет в старший разряд. В следующий разряд идет остаток от этого деления (0) и т. д. до последнего разряда, т. е. считаем снизу вверх. В результате деления получили код 10101. Проверим: 16 + 4 + 1 = 21. Ты гляди, работает! А ну-ка, переведем число посложней, типа 274.
Итак, суть понятна? Для простоты и экономии места на странице умножение нулей на весовые коэффициенты не показано. То есть, для первого примера полный формат имеет вид: 1 x 16 + 0 x 8 + 1 x 4 + 0 x 2 + 1 x 1 = 21.
Можно переводить и по-другому. Лично мне удобней переводить так. Если имеется какое-то число, например, 43, оно, как видно, меньше 64, но больше 32, значит первые два разряда 01. Из 43 вычитаем 32 получаем 11. Разряд с весовым коэффициентом 16 здесь не канает, ставим 0. Число 11 представляется как 1011 (см. первую таблицу). Итого имеем: 0010 1011. Первые два нуля стоят для красоты.
Как же перевести наоборот, из двоичного в десятичное. Еще проще. Это написано чуть-чуть выше, где проверяется результат перевода десятичного числа в двоичное. Допустим есть число 1011 0101. Где стоит 1, имеет право на жизнь весовой коэффициент, где 0 - весовые коэффициенты "сдохли". Считаем: 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = 181. Для тренировки можете проверить переводом его в двоичное.
Перевод шестнадцатеричных чисел туда сюда осуществляется аналогично. Делим десятичное число на 16 до получения остатка, причем меньшего 16. При делении десятичного числа остатки получаются в виде ряда чисел от 0 до 15. Числа от 10 до 15 заменяются буквами латинского алфавита A, B, C, D, E, F. Как и при переводе в двоичный код, последний остаток предшествует старшему разряду, результат деления последнего числа есть старший разряд. Переведем число 845 в 16-тиричный код.
845/16 = 52
Остаток 13 = D
52/16= 3
Остаток 4
Полученное число 34D. Проверим: 3 х 162 + 4 x 161 + D x 160 = 845. D в шестнадцатеричном коде эквивалентно 13. Здесь также показан и обратный перевод. Умножаем числа 16-тиричного кода на 16 в степени и складываем.
Для перевода 16-тиричного кода в двоичный достаточно разбить число на отдельные символы (числа) которым соответствуют двоичные эквиваленты. То есть, то же число 34D разбиваем на 3, 4 и D и записываем двоичный код каждого элемента: 3 = 0011, 4 = 0100, D = 1101. 34D = 0011 0100 1101. Вот так, 10-разрядное двоичное число в 16-тиричном эквиваленте записывается всего тремя символами. Понятно, зачем шестнадцатеричный код? Для обратного перевода двоичное число разбивается на тетрады и каждой тетраде ставится в соответствие шестнадцатеричный эквивалент. Причем разбиение ведется справа налево. Если последняя тетрада не получается, т. е. в старшей тетраде всего 1, 2 или 3 единицы, к ним дописывают нули. Получается как в последнем примере, первые два нуля образуют тетраду совместно с единицами (число 3).
Иногда, кстати, удобней переводить шестнадцатеричные числа в двоичные, а потом в десятичные и наоборот. Кому как нравится.
Существуют и другие специфические коды, например, семисегментный. Об этом будет рассказано дальше, при изучении использующих подобные коды устройств.