Урок №14. Двоичная, восьмеричная и шестнадцатеричная системы счисления.
Пусть требуется перевести число из восьмеричной системы в двоичную. Конечно, можно перевести число сначала в десятичную систему, а потом — в двоичную. Но для этого требуется выполнить две непростые операции, в каждой из них легко ошибиться.
Оказывается, можно сделать перевод из восьмеричной системы в двоичную напрямую, используя тесную связь между этими системами: их основания связаны равенством 23 = 8.
Теперь переведём отдельно каждую восьмеричную цифру в двоичную систему. Поскольку три двоичных разряда позволяют записать все числа от 0 до 7 (и никаких других чисел!), каждая восьмеричная цифра может быть записана в виде триады (группы из трёх цифр) в двоичной системе (табл. 2.1).

Алгоритм перевода восьмеричного числа в двоичную систему счисления
- Перевести каждую цифру (отдельно) в двоичную систему. Записать результаты в виде триады, добавив, если нужно, нули в начале.
- Соединить триады в одно «длинное» двоичное число.
Например, для числа 357218 сразу получаем:
357218 = 11 101 111 010 0012.
В этой записи триады специально отделены друг от друга пробелами. Обратите внимание, что все триады дополнены спереди нулями до трёх цифр:
2 = 102 = 0102, 1 = 12 = 0012.
Для самой первой триады это делать необязательно, потому что лидирующие нули в записи числа никак его не меняют. Напротив, если «потерять» нули в середине числа, получится неверный результат.
А если разбить двоичное число на триады, то можно быстро перевести его в восьмеричную систему счисления. Именно благодаря этому свойству восьмеричную систему удобно использовать для сжатой записи двоичных кодов.
Алгоритм перевода двоичного числа в восьмеричную систему счисления
- Разбить двоичное число на триады, начиная справа. В начало самой первой триады добавить лидирующие нули, если это необходимо.
- Перевести каждую триаду (отдельно) в восьмеричную систему счисления.
- Соединить полученные цифры в одно «длинное» число.
Переведём в восьмеричную систему число 10100111001011101112. Разобьём его на триады (начиная справа), в начало числа нужно добавить два нуля (они подчёркнуты):
10100111001011101112 = 001 010 011 100 101 110 1112.
Далее по табл. 2.1 переводим каждую триаду отдельно в восьмеричную систему:
10100111001011101112 = 12345678.
Теперь представьте себе объём вычислений, который потребуется для решения этой задачи через десятичную систему.
Основания двоичной и шестнадцатеричной систем связаны соотношением 24 = 16, поэтому можно переводить числа из шестнадцатеричной системы в двоичную напрямую. Алгоритмы перевода чисел из шестнадцатеричной системы в двоичную и обратно аналогичны соответствующим алгоритмам для восьмеричной системы. Каждая шестнадцатеричная цифра представляется в виде тетрады (группы из четырёх двоичных цифр) в двоичной системе счисления (табл. 2.2).

Переведём в двоичную систему число 5Е12316 (здесь показана разбивка на тетрады):
5Е12316 = 10111100001 001000112.
Обратите внимание, что для цифр, меньших 8 (кроме первой), результат перевода в двоичную систему нужно дополнить старшими нулями до четырёх знаков.
При обратном переводе нужно разбить двоичное число на тетрады, начиная справа, и каждую тетраду отдельно перевести в двоичную систему:
10000100001010101111002 =
= 10 0001 0000 1010 1011 11002 = 210АВС16.
Перевод из шестнадцатеричной системы в восьмеричную (и обратно) удобнее выполнять через двоичную систему. Можно, конечно, использовать и десятичную систему, но в этом случае объём вычислений будет значительно больше.
Пример 1.Переведём число 110101001112 в восьмеричную систему счисления.

Пример 2.Переведём число 16АС16 в двоичную систему счисления.

Пример 3. Выполним перевод восьмеричного 67 2528 числа в шестнадцатеричную систему счисления.
