среда, 30 мая 2012 г.

Системы счисления


Человеку издревле приходилось считать различные предметы, нужно было и записывать их количество. Самой первой, вероятно, возникла унарная2 система записи, при которой числа обозначались соответствующим количеством черточек (или засечек на деревяшке).

Унарная запись получается очень громоздкой и неудобной, поэтому люди стали искать более компактные способы обозначать большие числа. Появились разные условные обозначения для различных чисел. Например, многие народы использовали в качестве цифр буквы, к которым добавляли специальные значки. На Руси таким знаком было титло:

Но, все равно, число получалось сложением цифр, поэтому система оставалась сложной. Представьте: чтобы пользоваться древнерусской системой счисления, нужно было знать числовое значение 30 букв, а еще -- несколько особых символов, увеличивавших это значение ("тысяща", "тьма", "легион", "леодр"... -- все они получались при приписывании к "единице" -- букве "аз" разных значков). Вычисления же в таких системах были вообще чрезвычайно затруднены.

Системой счисления называют совокупность символов (цифр) и правил их использования для представления чисел.

В римской системе счисления появилась одна новая идея: хотя там тоже для обозначения чисел использовали буквы (1 -- I, 5 -- V, 10 -- X, 50 -- L, 100 -- C, 500 -- D, 1000 -- M), но роль их зависела от порядка записи (значение могло не только прибавляться, но и вычитаться). Развитие этой идеи привело к появлению современных позиционных систем счисления.

Мы настолько привыкли к нашей обычной -- десятеричной -- системе, что даже не задумываемся, насколько гениальной была идея, положенная в ее основу3: в позиционных системах счисления значение цифры зависит от ее позиции (места) в числе. Например, число 444 записано тремя одинаковыми цифрами, но каждая из них имеет свое значение: четыре сотни, четыре десятка и четыре единицы. То есть его можно записать вот так:

444 = 4.100 + 4.10 + 4.1.
или
444 = 4.102 + 4.101 + 4.100.

Нетрудно заметить, что если обозначить цифры числа как a2, a1 и a0, то любое трехзначное число может быть представлено в виде:
N = a2.102 + a1.101 + a0.100.<o:p</o:p

Число 10, степени которого используются в этой формуле (и именно столько разных цифр есть в десятичной системе), называют основанием системы счисления, а степени десятки -- весамиразрядов.

Вообще, выбор в качестве основания позиционной системы именно числа 10 объясняется традицией, а не какими-то особыми свойствами этого числа. С не меньшим успехом можно использовать и любое другое. В общем случае, если основание системы счисления равно p, число, записанное в этой системе, можно представить в виде:

N = aipi + ... + a2p2 + a1p1 + a0p0[1]

причем каждый из коэффициентов-цифр должен быть меньше p.
Пользуясь этой формулой можно легко перевести число из системы счисления с любым основанием в десятеричную.

Пример:
325426 = 3.64 +2.63 + 5.62 + 4.61 + 2.60 = 3.1296 + 2.216 + 5.36 + 4.6 + 2 = 3888 + 432 + 180 + 24 + 2 = 4526

А как выполнить обратный перевод? Для этого нам нужно будет последовательно делить нацело наше число на основание новой системы счисления, запоминая остатки. Пусть нужно перевести число 2000 в восьмеричную систему счисления.
Действуем так:
2000 : 8 = 250 (ост. 0)
250 : 8 = 31 (ост. 2)
31 : 8 = 3 (ост. 7)
3 : 8 = 0 (ост. 3)

Теперь запишем все остатки, не забывая о нулевых, с последнего до первого:
3720
Это и будет искомое представление.
200010 = 37208.

Примечания

  1. От лат. Unus -- один
  2. Мы обычно называем такую запись чисел арабской. На самом деле, изобретена она в Индии, но европейцы впервые узнали о ней от арабов
  3. Этим мы, фактически, определили, что 2000 = ((3.8 + 7).8 + 2).8 + 0 или, раскрывая скобки, 3.83 + 7.82 + 2.8 + 0. Сравните этот результат с формулой 

Комментариев нет:

Отправить комментарий