Системой счисления называется совокупность приемов наименования и записи чисел. В любой системе счисления для представления чисел выбираются некоторые символы (их называют цифрами), а остальные числа получаются в результате каких-либо операций над цифрами данной системы счисления.
Система называется позиционной, если значение каждой цифры (ее вес) изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число.
Число единиц какого-либо разряда, объединяемых в единицу более старшего разряда, называют основанием позиционной системы счисления. Если количество таких цифр равно P, то система счисления называется P-ичной. Основание системы счисления совпадает с количеством цифр, используемых для записи чисел в этой системе счисления.
Запись произвольного числа x в P-ичной позиционной системе счисления основывается на представлении этого числа в виде многочлена
x = anPn + an-1Pn-1 + ... + a1P1 + a0P0 + a-1P-1 + ... + a-mP-m
Арифметические действия над числами в любой позиционной системе счисления производятся по тем же правилам, что и десятичной системе, так как все они основываются на правилах выполнения действий над соответствующими многочленами. При этом нужно только пользоваться теми таблицами сложения и умножения, которые соответствуют данному основанию P системы счисления.
При переводе чисел из десятичной системы счисления в систему с основанием P > 1 обычно используют следующий алгоритм:
1) если переводится целая часть числа, то она делится на P, после чего запоминается остаток от деления. Полученное частное вновь делится на P, остаток запоминается. Процедура продолжается до тех пор, пока частное не станет равным нулю. Остатки от деления на P выписываются в порядке, обратном их получению;
2) если переводится дробная часть числа, то она умножается на P, после чего целая часть запоминается и отбрасывается. Вновь полученная дробная часть умножается на P и т.д. Процедура продолжается до тех пор, пока дробная часть не станет равной нулю. Целые части выписываются после запятой в порядке их получения. Результатом может быть либо конечная, либо периодическая дробь в системе счисления с основанием P. Поэтому, когда дробь является периодической, приходится обрывать умножение на каком-либо шаге и довольствоваться приближенной записью исходного числа в системе с основанием P.
Кодирование чисел
Чтобы использовать числа, нужно их как-то называть и записывать, нужна система нумерации. Различные системы счёта и записи чисел тысячелетиями сосуществовали и соревновались между собой, но к концу "докомпьютерной эпохи" особую роль при счёте стало играть число "десять", а самой популярной системой кодирования оказалась позиционная десятичная система. В этой системе значение цифры в числе зависит от её места (позиции) внутри числа. Десятичная система счисления пришла из Индии (не позднее VI века нашей эры). Алфавит этой системы: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} — всего 10 цифр, таким образом основание системы счисления — 10. Число записывается как комбинация единиц, десятков, сотен, тысяч и так далее. Пример: 1998=8*100 + 9*101 + 9*102 + 1*103.
В этой системе 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, но информацию несет не только цифра, но и место, на котором цифра стоит (то есть ее позиция). Самая правая цифра числа показывает число единиц, вторая справа - число десятков, следующая - число сотен и т.д.
Пример:
33310 = 3*100 + 3*10+3*1 = 300 + 30 + 3
Заметим, что выбор числа 10 в качестве основания системы счисления объясняется традицией, а не какими-то замечательными свойствами числа 10. Вообще, представление числа N в р-ричной системе счисления, это:
N=an*pn+an-l*pn-l+...+al*pl+ao, гдеа¹ 0, аiÎ{0, 1, 2, ..., аi}.
В Вавилоне, например, использовалась 60-ричная система счисления, алфавит содержал цифры от 1 до 59, числа 0 не было, таблицы умножения были очень громоздкими, поэтому очень скоро она была забыта, но отголоски её былой распространённости можно наблюдать и сейчас — деление часа на 60 минут, деление круга на 360 градусов.
Двоичная система счисления
Двоичная система счисления была придумана математиками и философами ещё до появления компьютеров (XVII — XIX вв.). Выдающийся математик Лейбниц говорил: "Вычисление с помощью двоек... является для науки основным и порождает новые открытия... При сведении чисел к простейшим началам, каковы 0 и 1, везде появляется чудесный порядок". Позже двоичная система была забыта, и только в 1936 — 1938 годах американский инженер и математик Клод Шеннон нашёл замечательные применения двоичной системы при конструировании электронных схем. Рассмотрим пример представления числа в двоичной системе счисления:
Пример 2.1.1.Переведём число 2000 в двоичную систему.
1. Делим 2000 на основание новой системы счисления — 2:
2000:2=1000(0 - остаток),
1000:2=500(0),
500:2=250(0),
250:2=125(0),
125:2=62(1),
62:2=31(0),
31:2=15(1),
15:2=7(1),
7:2=3(1),
3:2=1(1)
2. Собираем последнее частное от деления (всегда равно 1) и остатки от деления и записываем их по порядку, начиная снизу :
200010==111110100002
Для проверки переведём полученное число в десятичную систему счисления, для этого:
1. Выделим двоичные разряды числа, то есть, степени числа 2, начиная с 0-й:
1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
210 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 2' | 2° |
2. Запишем сумму произведений 0 и 1 на соответствующую степень числа 2 (см. представление числа в р-ричной системе счисления):
0*20+0*21+0*22+0*23+l*24+0*25+l*26+l*27+l*28+l*29+l*210= 16+64+128+256+512+1024=2000
Существуют системы счисления, родственные двоичной. При работе с компьютерами иногда приходится иметь дело с двоичными числами, так как двоичные числа заложены в конструкцию компьютера. Двоичная система удобна для компьютера, но неудобна для человека — слишком длинные числа неудобно записывать и запоминать. На помощь приходят системы счисления, родственные двоичной — восьмеричная и шестнадцатеричная.
Например, в шестнадцатеричной системе для записи чисел предназначены 10 арабских цифр и буквы латинского алфавита {А, В, С, D, Е, F}. Чтобы записать число в этой системе счисления, удобно воспользоваться двоичным представлением числа. Возьмём для примера то же число — 2000 или 11111010000 в двоичной системе. Разобьём его на четвёрки знаков, двигаясь справа налево, в последней четвёрке слева припишем незначащий 0, чтобы количество знаков в триадах было по четыре: 0111 1101 0000. Начнём перевод — числу 0111 в двоичной системе соответствует число 7 в десятичной (710=1*20+1*21+1*22), в шестнадцатеричной системе счисления цифра 7 есть; числу 1101 в двоичной системе соответствует число 13 в десятичной (13=1*20 + 0*21 + 1*22 + 1*23), в шестнадцатеричной системе этому числу соответствует цифра D, и, наконец, число 0000 — в любой системе счисления 0. Запишем теперь результат:
111110100002 = 7D016.
ДВЕНАДЦАТИРИЧНАЯ И ВОСЬМЕРИЧНАЯ СИСТЕМЫ СЧИСЛЕНИЯ
Хотя десятичная система счисления является наиболее широко применимой, это отнюдь не означает, что она самая лучшая. Широкое распространение во многом объясняется тем анатомическим обстоятельством, что у нас на руках и ногах по десять пальцев. Что же касается позиционного принципа и цифровых обозначений, то они с равным успехом могут быть приспособлены к системе счисления с любым основанием, независимо от того, равно ли оно 2, 10 или какому-нибудь другому целому положительному числу, кроме единицы. Например, подставив в полиномиальное представление 7x 2 + 6x 1 + 5x 0 + 4x –1 + 3x –2 вместо x значение 10, мы получим число 765,43 в нашей обычной десятичной системе. Но без малейшего ущерба для позиционного принципа обозначения целых чисел и дробей вместо x можно подставить и любое другое целое положительное число. Вместо числа 10 в качестве основания системы счисления чаще других предлагалось использовать числа 8 и 12. Системы, получающиеся при таких заменах, известны под названием восьмеричной и двенадцатеричной. В восьмеричной системе вместо переменной x в полиномиальном представлении следует подставить 8, и тогда число, равное в десятичной системе 765,43, в восьмеричной системе окажется равным (8 2) + 6(8 1) + 5(8 0) + 4(8 –1) + 3(8 –2), т.е. числу. В двенадцатеричной системе то же самое полиномиальное представление при x = 12 дает (12 2) + 6(12 1) + 5(12 0) + 4(12 –1) + 3(12 –2), или в наших обычных обозначениях. Что касается вычислений, то они во всех трех системах счисления, десятичной, восьмеричной и двенадцатиричной, производятся практически одинаково и с одной и той же легкостью. Различие в основном заключается в таблицах сложения и умножения, поскольку они изменяются от одной системы счисления к другой. Например, сумма семь плюс семь равна сумме восемь плюс шесть в восьмеричной системе, десять плюс четыре – в десятичной и двенадцать плюс два – в двенадцатиричной. Символически эти суммы и произведения можно записать следующим образом:Мы видим, что переход от десятичной системы к восьмеричной или двенадцатиричной действительно требует полного пересмотра таблиц сложения и умножения; это объясняет, почему предложения о переходе к этим системам счисления не получили широкого признания. Преимущества, которые сулит этот переход, сводятся на нет сопряженными с ним трудностями. Главные преимущества восьмеричной и двенадцатиричной систем счисления связаны с делимостью их оснований. Рассматривая только целые числа, меньшие половины основания (поскольку ни одно число не может быть делителем основания, если это число больше половины основания, но меньше его), нетрудно понять, что число 10 имеет два неделителя – числа 3 и 4, тогда как в восьмеричной системе единственный неделитель, меньший половины основания, есть число 3, а в двенадцатиричной системе единственный неделитель основания равен числу 5. Иначе говоря, преимущество числа 12 как основания системы счисления заключается в том, что оно имеет делителями числа 2, 3, 4 и 6, тогда как число 10 имеет делителями числа 2 и 5. Число 8 имеет делителями только числа 2 и 4, однако его основное преимущество перед другими в том, что непрерывное деление пополам неизменно приводит к «одноместному» дробному представлению в полиномиальной форме. Например, если 8 разделить на 210, то результат окажется в точности равным (0,004)8, тогда как если 12 разделить на 210, то получится (приближенно) (0,0183)12, а при делении на 210 числа 10 результат (также приближенный) будет равным (0,0097656)10.