Для удобства последующего преобразования дискретный сигнал подвергается кодированию(о кодировании см. в разделе Кодирование сигнала). Большинство кодов основано на системах счисления, причем использующих позиционный принцип образования числа, при котором значение каждой цифры зависит от ее положения в числе.
Примером позиционной формы записи чисел является та, которой мы пользуемся (так называемая арабская форма чисел). Так, в числах 123 и 321 значения цифры 3, например, определяются ее положением в числе: в первом случае она обозначает три единицы (т.е. просто три), а во втором – три сотни (т.е. триста).
Тогда полное число получается по формуле:
где l – количество разрядов числа, уменьшенное на 1,
i – порядок разряда,
m – основание системы счисления,
ai – множитель, принимающий любые целочисленные значения от 0 до m-1, и соответствующий цифре i-го порядка числа.
Например, для десятичного (m = 10) числа 345 его полное значение рассчитывается по формуле:
3*102 + 4*101 + 5*100 = 345.
Римские числа являются примером полупозиционной системы образования числа: так, в числах IX и XI знак I обозначает в обоих случаях единицу (признак непозиционной системы), но, будучи расположенным слева от знака X (обозначающего десять), вычитается из десяти, а при расположении справа – прибавляется к десяти. В первом случае полное значение числа равно 9, во втором – 11.
В современной информатике используются в основном три системы счисления (все – позиционные): двоичная, шестнадцатеричная и десятичная.
Двоичная система счисления используется для кодирования дискретного сигнала, потребителем которого является вычислительная техника. Такое положение дел сложилось исторически, поскольку двоичный сигнал проще представлять на аппаратном уровне. В этой системе счисления для представления числа применяются два знака – 0 и 1.
Шестнадцатеричная система счисления используется для кодирования дискретного сигнала, потребителем которого является хорошо подготовленный пользователь – специалист в области информатики. В такой форме представляется содержимое любого файла, затребованное через интегрированные оболочки операционной системы, например, средствами Norton Commander в случае MS DOS. Используемые знаки для представления числа – десятичные цифры от 0 до 9 и буквы латинского алфавита – A, B, C, D, E, F.
Десятичная система счисления используется для кодирования дискретного сигнала, потребителем которого является так называемый конечный пользователь – неспециалист в области информатики (очевидно, что и любой человек может выступать в роли такого потребителя). Используемые знаки для представления числа – цифры от 0 до 9.
Соответствие между первыми несколькими натуральными числами всех трех систем счисления представлено в таблице перевода:
Десятичнаясистема
Двоичная система
Шестнадцатеричная система
A
B
C
D
E
F
Для различения систем счисления, в которых представлены числа, в обозначение двоичных и шестнадцатеричных чисел вводят дополнительные реквизиты:
· для двоичных чисел – нижний индекс справа от числа в виде цифры 2 или букв В либо b (binary – двоичный), либо знак B или b справа от числа. Например, 1010002 = 101000b = 101000B = 101000B = 101000b;
· для шестнадцатеричных чисел - нижний индекс справа от числа в виде числа 16 или букв H либо h (hexadecimal – шестнадцатеричный), либо знак H или h справа от числа. Например, 3AB16 = 3ABH = 3ABh = 3ABH = 3ABh.
Для перевода чисел из одной системы счисления в другую существуют определенные правила. Они различаются в зависимости от формата числа – целое или правильная дробь. Для вещественных чисел используется комбинация правил перевода для целого числа и правильной дроби.
Правила перевода целых чисел
Результатом перевода целого числа всегда является целое число.
Перевод из десятичной системы счисления в двоичную и шестнадцатеричную:
а) исходное целое число делится на основание системы счисления, в которую переводится (на 2 - при переводе в двоичную систему счисления или на 16 - при переводе в шестнадцатеричную); получается частное и остаток;
б) если полученное частное меньше основания системы счисления, в которую выполняется перевод, процесс деления прекращается, переходят к шагу в). Иначе над частным выполняют действия, описанные в шаге а);
в) все полученные остатки и последнее частное преобразуются в соответствии с таблицей перевода в цифры той системы счисления, в которую выполняется перевод;
г) формируется результирующее число: его старший разряд – полученное последнее частное, каждый последующий младший разряд образуется из полученных остатков от деления, начиная с последнего и кончая первым. Таким образом, младший разряд полученного числа – первый остаток от деления, а старший – последнее частное.
Пример 1. Выполнить перевод числа 19 в двоичную систему счисления:
Таким образом, 19 = 100112.
Пример 2. Выполнить перевод числа 19 в шестнадцатеричную систему счисления:
Таким образом, 19 = 1316.
Пример 3. Выполнить перевод числа 123 в шестнадцатеричную систему счисления:
Здесь остаток 11 преобразован в шестнадцатеричную цифру В (см. таблицу) и после этого данная цифра вошла в число. Таким образом, 123 = 7В16.
Перевод из двоичной и шестнадцатеричной систем счисления в десятичную.
В этом случае рассчитывается полное значение числа по известной формуле.
Пример 4. Выполнить перевод числа 1316 в десятичную систему счисления. Имеем:
1316 = 1*161 + 3*160 = 16 + 3 = 19.
Таким образом, 1316 = 19.
Пример 5. Выполнить перевод числа 100112 в десятичную систему счисления. Имеем:
Перевод из двоичной системы счисления в шестнадцатеричную:
а) исходное число разбивается на тетрады (т.е. 4 цифры), начиная с младших разрядов. Если количество цифр исходного двоичного числа не кратно 4, оно дополняется слева незначащими нулями до достижения кратности 4;
б) каждая тетрада заменятся соответствующей шестнадцатеричной цифрой в соответствии с таблицей.
Пример 6. Выполнить перевод числа 100112 в шестнадцатеричную систему счисления.
Поскольку в исходном двоичном числе количество цифр не кратно 4, дополняем его слева незначащими нулями до достижения кратности 4 числа цифр. Имеем:
В соответствии с таблицей 00112 = 112 = 316 и 00012 = 12 = 116.
Тогда 100112 = 1316.
Перевод из шестнадцатеричной системы счисления в двоичную:
а) каждая цифра исходного числа заменяется тетрадой двоичных цифр в соответствии с таблицей. Если в таблице двоичное число имеет менее 4 цифр, оно дополняется слева незначащими нулями до тетрады;
б) незначащие нули в результирующем числе отбрасываются.
Пример 7. Выполнить перевод числа 1316 в двоичную систему счисления.
По таблице имеем:
· 116 = 12 и после дополнения незначащими нулями двоичного числа 12 = 00012;
· 316 = 112 и после дополнения незначащими нулями двоичного числа 112 = 00112.
Тогда 1316 = 000100112. После удаления незначащих нулей имеем 1316 = 100112.
Правила перевода правильных дробей
Напомним, что правильная дробь имеет нулевую целую часть, т.е. у нее числитель меньше знаменателя.
Результат перевода правильной дроби всегда правильная дробь.
Перевод из десятичной системы счисления в двоичную и шестнадцатеричную:
а) исходная дробь умножается на основание системы счисления, в которую переводится (2 или 16);
б) в полученном произведении целая часть преобразуется в соответствии с таблицей в цифру нужной системы счисления и отбрасывается – она является старшей цифрой получаемой дроби;
в) оставшаяся дробная часть (это правильная дробь) вновь умножается на нужное основание системы счисления с последующей обработкой полученного произведения в соответствии с шагами а) и б);
г) процедура умножения продолжается до тех пор, пока ни будет получен нулевой результат в дробной части произведения или ни будет достигнуто требуемое количество цифр в результате;
д) формируется искомое число: последовательно отброшенные в шаге б) цифры составляют дробную часть результата, причем в порядке уменьшения старшинства.
Пример 1. Выполнить перевод числа 0,847 в двоичную систему счисления. Перевод выполнить до четырех значащих цифр после запятой.
Имеем:
Таким образом, 0,847 = 0,11012.
В данном примере процедура перевода прервана на четвертом шаге, поскольку получено требуемое число разрядов результата. Очевидно, это привело к потере ряда цифр.
Пример 2. Выполнить перевод числа 0,847 в шестнадцатеричную систему счисления. Перевод выполнить до трех значащих цифр.
Имеем:
В данном примере также процедура перевода прервана.
Таким образом, 0,847 = 0,D8D16.
Перевод из двоичной и шестнадцатеричной систем счисления в десятичную.
В этом случае рассчитывается полное значение числа по формуле, причем коэффициенты ai принимают десятичное значение в соответствии с таблицей.
Пример 3. Выполнить перевод из двоичной системы счисления в десятичную числа 0,11012.
Расхождение полученного результата с исходным числом (см. пример 2) вызвано тем, что процедура перевода в шестнадцатеричную дробь была прервана.
Таким образом, 0,D8D16 = 0,84692.
Перевод из двоичной системы счисления в шестнадцатеричную:
а) исходная дробь делится на тетрады, начиная с позиции десятичной точки вправо. Если количество цифр дробной части исходного двоичного числа не кратно 4, оно дополняется справа незначащими нулями до достижения кратности 4;
б) каждая тетрада заменяется шестнадцатеричной цифрой в соответствии с таблицей.
Пример 5. Выполнить перевод из двоичной системы счисления в шестнадцатеричную числа 0,11012.
Имеем:
В соответствии с таблицей 11012 = D16. Тогда 0,11012 = 0,D16.
Пример 6. Выполнить перевод из двоичной системы счисления в шестнадцатеричную числа 0,00101012.
Поскольку количество цифр дробной части не кратно 4, добавим справа незначащий ноль:
В соответствии с таблицей 00102 = 102 = 216 и 10102 = A16.
Тогда 0,00101012 = 0,2A16.
Перевод из шестнадцатеричной системы счисления в двоичную:
а) каждая цифра исходной дроби заменяется тетрадой двоичных цифр в соответствии с таблицей;
б) незначащие нули отбрасываются.
Пример 7. Выполнить перевод из шестнадцатеричной системы счисления в двоичную числа 0,2А16.
По таблице имеем 216 = 00102 и А16 = 10102.
Тогда 0,2А16 = 0,001010102.
Отбросим в результате незначащий ноль и получим окончательный ответ: 0,2А16 = 0,00101012
Правило перевода дробных чисел (неправильных дробей)
Напомним, что неправильная дробь имеет ненулевую дробную часть, т.е. у нее числитель больше знаменателя.
Результат перевода неправильной дроби всегда неправильная дробь.
При переводе отдельно переводится целая часть числа, отдельно – дробная. Результаты складываются.
Пример 1. Выполнить перевод из десятичной системы счисления в шестнадцатеричную числа 19,847. Перевод выполнять до трех значащих цифр после запятой.
Представим исходное число как сумму целого числа и правильной дроби:
19,847 = 19 + 0,847.
Как следует из примера 2 раздела Перевод целых чисел 19 = 1316, а в соответствии с примером 2 раздела Перевод правильных дробей 0,847 = 0,D8D16.
Тогда имеем:
19 + 0,847 = 1316 + 0,D8D16 = 13,D8D16.
Таким образом, 19,847 = 13,D8D16.
Правила выполнения простейших арифметических действий
Арифметические операции для двоичных и шестнадцатеричных чисел выполняются по тем же правилам, что и для десятичных чисел, которые хорошо знакомы читателю. Рассмотрим на примерах выполнение таких арифметических операций, как сложение, вычитание и умножение для целых чисел.
Правила сложения
Таблица сложения двоичных цифр имеет вид (желтым цветом выделены значения суммы):
Пример 1. Сложить двоичные числа 1101 и 11011.
Запишем слагаемые в столбик и пронумеруем разряды, присвоив младшему разряду номер 1:
номера разрядов:
слагаемые:
Процесс образования суммы по разрядам описан ниже:
а) разряд 1: 12 + 12 = 102; 0 остается в разряде 1, 1 переносится в разряд 2;
б) разряд 2: 02 + 12 + 12 = 102, где вторая 12 – единица переноса; 0 остается в разряде 2, 1 переносится в разряд 3;
в) разряд 3: 12 + 02 + 12 = 102, где вторая 12 – единица переноса; 0 остается в разряде 3, 1 переносится в разряд 4;
г) разряд 4: 12 + 12 + 12 = 112, где третья 12 – единица переноса; 1 остается в разряде 4, 1 переносится в разряд 5;
д) разряд 5: 12 + 12 = 102; где вторая 12 – единица переноса; 0 остается в разряде 5, 1 переносится в разряд 6.
Таким образом: 1 1 0 12 +1 1 0 1 12 = 10 1 0 0 02.
Проверим результат. Для этого определим полные значения слагаемых и суммы (см. Перевод целых чисел):