Все известные позиционные системы счисления являются аддитивно-мультипликативными. Особенно отчетливо аддитивно-мультипликативный способ образования чисел из базисных выражен в числительных русского языка, например пятьсот шестьдесят восемь (т.е. пять сотен плюс шесть десятков плюс восемь).
Арифметические действия над числами в любой позиционной системе счисления производятся по тем же правилам, что и в десятичной системе, так как все они основываются на правилах выполнения действий над соответствующими полиномами. При этом нужно только пользоваться теми таблицами сложения и умножения, которые имеют место при данном основании К системы счисления.
Отметим, что во всех позиционных системах счисления с любым основанием К умножения на числа вида Кm , где m - целое число, сводится просто к перенесению запятой у множимого на m разрядов вправо или влево (в зависимости от знака m), так же как и в десятичной системе.
Для указания того, в какой системе счисления записано число, условимся при его изображении основание системы счисления указывать в виде нижнего индекса при нем, например, 35.648.
В современной вычислительной технике, в устройствах автоматики и связи широко используется двоичная система счисления. Это система счисления с наименьшим возможным основанием. В ней для изображения числа используются только две цифры: 0 и 1.
Произвольное число X в двоичной системе представляется в виде полинома:
X = an´2n+ an-1´2n-1+…+ a1´21+ a0´20 + a-1´2-1+…+ a-m´2-m… (3.9)
где каждый коэффициент аi может быть либо 0, либо 1.
Так как в двоичной системе счисления для изображения любых чисел используются только две различные цифры, то при построении ЭВМ можно использовать элементы, которые могут находиться только в двух состояниях (например, высокое или низкое напряжение в цепи, наличие или отсутствие электрического импульса и т.п.). Это обстоятельство, а также простота выполнения арифметических операций являются причиной того, что большинство современных ЭВМ используют двоичную систему счисления.
Неудобство использования двоичной системы счисления заключается в громоздкости записи чисел. Это неудобство не имеет существенного значения для ЭВМ. Однако если возникает необходимость кодировать информацию «вручную», например, при составлении программы на машинном языке, то предпочтительнее оказывается пользоваться восьмеричной или шестнадцатеричной системой счисления (в силу их свойств, которые будут отмечены позднее).
В восьмеричной системе счисления базисными числами являются 0, 1, 2, 3, 4, 5, 6, 7. Запись любого числа в этой системе основывается на его разложении по степеням числа восемь с коэффициентами, являющимися указанными выше базисными числами.
Например, десятичное число 83.5 в восьмеричной системе будет изображаться в виде 123.4. Действительно, эта запись по определению означает представление числа в виде полинома: 1х82+2х81+3х80+4х8-1 = 64 + 16 + 3 + 4/8 = 83.5.
В шестнадцатеричной системе счисления базисными являются числа от нуля до пятнадцати. Эта система отличается от рассмотренных ранее тем, что в ней общепринятых (арабских) цифр не хватает для обозначения всех базисных чисел, поэтому приходится вводить в употребление новые символы. Обычно для обозначения первых десяти целых чисел от нуля до девяти используют арабские цифры, а для следующих целых чисел от десяти до пятнадцати используются буквенные обозначения A, B, C, D, E, F.
Например, десятичное число 175.5 в шестнадцатеричной системе будет записываться в виде AF.8. Действительно:
Перевод чисел из одной системы счисления в другую
При решении задач с помощью ЭВМ исходные данные обычно задаются в десятичной системе счисления; в этой же системе, как правило, нужно получить и окончательные результаты. Так как в современных ЭВМ данные кодируются в основном в двоичных кодах, то, в частности, возникает необходимость перевода чисел из десятичной в двоичную систему счисления и наоборот.
При рассмотрении правил перевода чисел из одной системы счисления в другую ограничимся только такими системами счисления, у которых базисными числами являются последовательные целые числа от 0 до Р-1 включительно, где Р - основание системы счисления.
Задача перевода заключается в следующем. Пусть известна запись числа х в системе счисления с каким-либо основанием Р:
pnpn-1…p1p0p-1p-2…,
где рi - цифры Р-ичной системы (0 £ рi £ Р-1). Требуется найти запись этого же числа х в системе счисления с другим основанием Q:
qsqs-1…q1q0q-1q-2…,
где qi - искомые цифры Q-ичной системы (0 £ qi £ Q-1). При этом можно ограничиться случаем положительных чисел, так как перевод любого числа сводится к переводу его модуля и приписыванию числу нужного знака.
При рассмотрении правил перевода нужно учитывать, средствами какой арифметики должен быть осуществлен перевод, т.е. в какой системе счисления должны быть выполнены все необходимые для перевода действия. Условимся считать, что перевод должен осуществляться средствами Р-ичной арифметики.
Перевод Q®P. Задача перевода произвольного числа х, заданного в системе счисления с основанием Q, в систему счисления с основанием Р сводится к вычислению полинома вида
Для получения Р-ичного изображения выражения (3.13) необходимо все цифры qi и число Q заменить Р-ичными изображениями и выполнить арифметические операции в Р-ичной системе счисления.
Заметим, что при переводе следует придерживаться правила сохранения точности изображения числа в разных системах, причем под точностью понимается значение единицы самого младшего (правого) разряда, используемого в записи числа в той или иной системе счисления.
Перевод Р®Q. Так как для перевода любого числа достаточно уметь переводить его целую и дробную части, рассмотрим отдельно эти два случая.
1. Перевод целых чисел. Пусть известна запись целого числа N в системе счисления с основанием Р и требуется перевести это число в систему счисления с основанием Q. Так как N - целое, то его запись в Q-ичной системе счисления имеет вид
N = qsqs-1…q1q0,
где qi - искомые цифры Q-ичной системы (0 £ qi < Q-1). Для определения q0 разделим обе части равенства:
N = qsQs+ qs-1Qs-1+…+ q1Q1+q0 (3.14)
на число Q, причем в левой части произведем деление, пользуясь правилами Р-ичной арифметики (так как запись числа N в Р-ичной системе счисления известна), а правую часть перепишем в виде
N/Q = qsQs+ qs-1Qs-1+…+ q1Q1+q0 / Q
Приравнивая между собой полученные целые и дробные части (учитывая, что qi < Q):
[N/Q] = qsQs-1+ qs-1Qs-2+…+ q1
[N/Q]=q0/Q
Таким образом, младший коэффициент q0 в разложении (3.14) определяется соотношением
Q0=Q[N/Q],
причем указанные здесь действия на самом деле не выполняются, так как q0 является просто остатком от деления N на Q.