Итак, мы выяснили, что такое система счисления; узнали, какого вида они бывают; рассмотрели различные необычные системы счисления и научились выполнять перевод между системами счисления (не только целых, но и дробных чисел).
Вы, наверное, заметили, что вычисления при переводе из одной системы счисления в другую занимают ОЧЕНЬ много времени. И не вздыхали ли Вы при этом "Эх, упростить бы процедуру перевода из одной в другую систему счисления…”?
Должна обрадовать вас – можно! Правда, не все числа. А только числа тех систем, основания которых кратны двум.
Вот мы и плавненько подобрались к тому, чтобы научиться выполнять быстрый перевод чисел в системах счисления, основание которых равно 2, 8 и 16.
Это был второй пункт нашего плана, озвученного на прошлом занятии. Итак, приступаем.
Восьмеричные числа
Для записи этих чисел используются восемь цифр: 0, 1, 2, 3, 4, 5, 6, 7. А это значит, что в каждом разряде числа возможны 8 вариантов записи (т.е. проще говоря, в одном разряде может быть одна из этих 8 цифр).
Т.к. 8 = 2i и 23 = 2i, потому i=3.
Таким образом, чтобы из восьмеричной системы счисления перевести число в двоичный код, надо каждую цифру этого числа представить триадой (тройкой) двоичных символов. При этом лишние нули в старших разрядах отбрасываются. Например:
1234,7778 = 001 010 011 100, 111 111 1112 = 1 010 011 100, 111 111 1112
12345678 = 001 010 011 100 101 110 1112 = 1 010 011 100 101 110 1112
То есть вам всего лишь надо запомнить, как записываются двоичные числа (достаточно в пределах восьми). А сделать это несложно: т.к. всего 2 цифры (0 и 1), то есть надо просто записывать в порядке возрастания числа, состоящие из 0 и 1:
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011 и т.д.
Двоичные числа
При переводе двоичного числа в восьмеричную систему счисления нужно каждую триаду двоичных цифр заменить восьмеричной цифрой. При этом, если необходимо, число выравнивается путем дописывания нулей перед целой частью или после дробной.
Отделяем с конца (в целой части) или с начала (в дробной) по три знака и, если недостаточно, то дописываем нули:
11001112 = 001 100 1112 = 1478 (ведь 0012=18, 1002=48, 1112=78)
11,10012 = 011,100 1002 = 3,448 (ведь 0112=38, 1002=48)
110,01112 = 110,011 1002 = 6,348 (ведь 1102=68, 0112=38, 1002=48)
Шестнадцатеричные числа
Для записи этих чисел используются 16 цифр:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
То есть для каждого разряда числа возможны 16 вариантов записи.
Т.к. 16 = 2i и 24 = 2i, потому i=4.
Таким образом, для перевода двоичного числа в 16-ричное его нужно разбить на группы по четыре цифры и преобразовать каждую группу в 16-ричную цифру:
11001112 = 0110 01112 = 6716
11,10012 = 0011,10012 = 3,916
110,01110012 = 0110,0111 00102 = 65,7216
Для перевода 16-ричного числа в двоичный код необходимо каждую цифру этого числа представить четверкой двоичных цифр:
1234,AB7716 = 0001 0010 0011 0100,1010 1011 0111 01112 = 1 0010 0011 0100,1010 1011 0111 01112
CE456716 = 1100 1110 0100 0101 0110 01112
Например, переведем восьмеричное число 2118 в шестнадцатеричное.
Для этого сначала преобразуем число 2138в двоичный код, для чего каждую из цифр (2, 1, и 3) запишем как двоичное:
2118 = 010 001 0112 = 100010112
А теперь в полученном двоичном числе отделим с конца по 4 знака (т.к. для 16-ричного числа нужны четверки чисел):
100010112 = 1000 10112
Но 10002 = 816 и 10112 = B16
Получаем, что 2118 = 8B16 в
Вот, пожалуй, и все на сегодня. Задачки по теме порешаем в следующий раз.