Повторение
- Как, не производя никаких дополнительных действий, найти:
- Произведение любого двоичного числа на 2?
- Остаток от деления любого двоичного числа на 2?
- Как проще всего умножить любое двоичное число на 3?
- Как проще всего умножить любое 16-ричное число на 24?
- Установите признак делимости двоичного числа на 3 (для этого вспомните признаки делимости десятичных чисел).
Умножение и деление на разрядную единицу
   
Как и в десятичной системе счисления, так и в любой другой, умножение и деление чисел на разрядные единицы (элементы базиса) сводится к передвижению запятой на соответствующее количество знаков влево или вправо.
   
Например, 12F,AC16:1610=12,FAC16; 34,758*6410=34758;
Соответствие чисел, записанных в системах счисления с основанием 2k
   
Составляя таблицы сложения и умножения в двоичной системе счисления, вы убедились, что запомнить эти таблицы достаточно легко, выполнять действия над числами в двоичной системе счисления также просто.
   
Отметим один существенный недостаток двоичных чисел – большое количество цифр в такой записи. Представьте себе, сколько знаков в двоичной системе счисления будет занимать адрес байта оперативной памяти с номером 65536 – 17 разрядов!
   
С другой стороны, очень трудно запомнить таблицы сложения и умножения в 16-ричной системе счисления, зато числа, записанные в 16-ричной системе счисления – короткие, если можно так выразиться.
   
Поэтому для внешнего представления данных в компьютере, а также для адресации байтов оперативной памяти, на большинстве современных компьютеров имеется еще одна система счисления – 16-ричная.
   
Существуют простые алгоритмы перевода двоичных чисел в шестнадцатеричные и обратно. Эти алгоритмы базируются на том, что 16 – четвертая степень двойки, значит, двоичную запись числа из 4-х цифр можно представить в виде 16-ричной цифры.
  
Рассмотрим это правило на примере. Переведем десятичное число 3 258 в двоичную и 16-ричную системы счисления. Получим 1100101110102 и СВА16. Значит, 1100101110102 = СВА16.
  
А теперь каждую цифру 16-ричного числа заменим на соответствующую ей четверку двоичных знаков: С16=1210=11002; В16=1110=10112; А16=1010=10102. Записав эти последовательности в порядке следования, получим соответствующее двоичное число.
   
Таким образом, для перевода 16-ричных чисел в двоичные каждая 16-ричная цифра представляется в виде 4-х разрядного двоичного числа – двоичной тетрады. Совокупность этих двоичных цифр и дает двоичную запись 16-ричного числа.
   
Пример 1. А1F416→X2. Переведем каждую цифру числа в двоичную тетраду:
  
A=1010
  
1=0001
  
F=1111
  
4=0100
  
Выпишем ответ: А1F416=10100001111101002.
  
Пример 2. 4E316→X2. Выполним те же действия:
  
4=0100
  
E=1110
  
3=0011
  
Выпишем ответ. Нули старшей цифры, стоящие слева, в двоичной записи числа можно не указывать: 4E316=100111000112.
  
Так же переводятся и дроби, только при этом можно не указывать нули младшей цифры дробной части, стоящие справа.
  
Пример 3. 5D,B816→X2.
  
5=0101
  
D=1101
  
B=1011
  
8=1000
  
Получим: 5D,B816=1011101,101112.
  
Сформулируем правило: Для перевода 16-ричных чисел в двоичные нужно каждую цифру 16-ричного числа представить в виде двоичной тетрады и записать полученную последовательность двоичных цифр, не указывая нули старшей цифры целой части, стоящие слева, и нули младшей цифры дробной части, стоящие справа.
  
При обратном переводе нужно группировать цифры двоичного числа в тетрады, и каждую тетраду заменять 16-ричной цифрой. При этом иногда нужно дописывать недостающие нули в целой и дробной частях.
  
Пример 4. 1 0100 1011,112→X16. Заметно, что при разбиении на тетрады, нужно дописать три нуля к старшей цифре целой части и два нуля к цифрам дробной части: 0001 0100 1011,1100. Заменив каждую полученную тетраду 16-ричной цифрой, получим: 0001 0100 1011,11002=14B,C16.
  
Итак, для перевода двоичных чисел в 16-ричные нужно двоичное число разбить на тетрады – для целой части – справа налево, для дробной части – слева направо, дописывая недостающие нули. Для каждой тетрады записать ее 16-ричное значение.
  
Подобные алгоритмы перевода справедливы для всех систем счисления, основания которых равны некоторой степени двойки. А также в общем случае - для всех пар систем счисления, в которых основание одной системы счисления есть некая степень основания другой системы счисления.
  
Например, для перевода восьмеричных чисел в двоичные, нужно каждую цифру восьмеричного числа представить в виде тройки двоичных чисел (двоичной триады), поскольку 8=23. Для обратного перевода двоичное число нужно разбить на триады, и каждую триаду заменить восьмеричной цифрой.
  
Пример 5. 135,78→X2.
  
1=001
  
3=001
  
5=101
  
7=111
  
Получим: 135,78=1011101,1112.
  
Пример 6. 10 111,000 0112→X8. Заменив каждую триаду восьмеричной цифрой, получим: 010 111,000 0112=27,038.
Задачи
К оглавлению