Роль систем счисления в истории компьютеров
Алексей Стахов
В предисловии к книге Анри Лебега "Измерение величин" академик А.Н. Колмогоров замечает: "У математиков существует склонность, уже владея законченной математической теорией, стыдиться ее происхождения. По сравнению с кристаллической ясностью развития теории, начиная с уже готовых ее основных понятий и допущений, кажется грязным и неприятным занятием копаться в происхождении этих основных понятий и допущений. Все здание школьной алгебры и весь математический анализ могут быть воздвигнуты на понятии действительного числа без всякого упоминания об измерении конкретных величин (длин, площадей, промежутков времени и т.д.). Поэтому на разных ступенях обучения с разной степенью смелости неизменно проявляется одна и та же тенденция: возможно скорее разделаться с введением чисел и дальше уже говорить только о числах и соотношениях между ними. Против этой тенденции и протестует Лебег".
К сожалению, нечто подобное иногда наблюдается и в компьютерной науке. Владея развитой компьютерной теорией, компьютерные специалисты иногда забывают о той роли, которую сыграли системы счисления в истории компьютеров. Ведь первые счетные приборы (абаки и арифмометры), прообразы современных компьютеров, начали создаваться задолго до возникновения алгебры логики, теории алгоритмов - и главную роль при их создании сыграли именно системы счисления. Об этом не следует забывать, прогнозируя дальнейшее развитие компьютерной техники.
В истории систем счисления выделяют несколько этапов: начальная стадия счета, непозиционные системы счисления, алфавитные системы нумерации, поместные или позиционные системы счисления. Начальная стадия счета "характеризуется изображением сосчитываемых множеств при помощи частей тела, особенно пальцев рук и ног, палочек, узлов веревки и т.д. Как подчеркивается в статье И.Г. Башмаковой и А.П. Юшкевича "Происхождение систем счисления" ("Энциклопедия элементарной математики", том 1, "Арифметика", 1951 г.), ":несмотря на крайнюю примитивность этого способа изображения, он сыграл исключительную роль в развитии понятия числа". И именно в этот начальный период было сделано одно из крупнейших открытий античной математики. Речь идет о позиционном принципе представления чисел. Как подчеркивается в упомянутой выше статье Башмаковой И.Г. и Юшкевича А.П., "первой известной нам системой счисления, основанной на поместном, или позиционном принципе, является шестидесятеричная система древних вавилонян, возникшая примерно за 2000 лет до н.э.".
Для объяснения вопроса о ее происхождении в истории математики возникло несколько конкурирующих гипотез. М. Кантор первоначально предположил, что сумерийцы (первичное население долины Евфрата) считали год равным 360 суткам и что шестидесятеричная система имеет астрономическое происхождение. По гипотезе Г. Кевича в долине Евфрата встретились два народа, из которых у одного была десятичная система счисления, а у другого основанием было число 6 (возникновение такого основания Кевич объясняет особым счетом на пальцах, в котором сжатая в кулак рука означала 6). Благодаря слиянию обеих систем возникло "компромиссное" основание 60. Заметим, что гипотезы Кантора и Кевича касаются вопроса о происхождении основания 60, но не самого позиционного принципа представления чисел.
На последний вопрос отвечает гипотеза Нейгебауера об измерительном происхождении позиционного принципа, изложенная в книге "Лекции по истории античных математических наук" (т. 1 - "Догреческая математика", 1937 г.). Согласно этой гипотезе "основные этапы образования позиционной системы в Вавилоне были таковы: 1) установление количественного соотношения между двумя самостоятельными существовавшими системами мер и 2) опускание названий разрядовых единиц при письме". Эти этапы возникновения позиционных систем Нейгебауэр считает совершенно общими, подчеркивая при этом, что "позиционная шестидесятеричная система: оказалась вполне естественным конечным результатом долгого развития, ничем принципиально не отличающегося от аналогичных процессов в других культурах".
Что касается основания 60, которое, по мнению Нейгебауэра, возникло как синтез вавилонских систем мер, то более убедительной все же является гипотеза Кантора о его "астрономическом" происхождении. Происхождение числа 60 в качестве основания вавилонской системы счисления, а также чисел 12, 30 и 360 как узловых чисел всех календарных систем, систем измерения времени и угловых величин можно объяснить с позиций астрологических и астрономических знаний и основанных на них представлений о гармонии Вселенной. В Вавилоне и Египте с давних времен при составлении календарей большое значение придавали самой крупной из планет-гигантов - Юпитеру, который примерно за 12 лет делает полный оборот вокруг Солнца. Не меньшую роль играл также Сатурн, который совершает полный оборот вокруг Солнца примерно за 30 лет. Приняв 60 лет в качестве главного цикла Солнечной системы, составителям древних календарей удалось идеально согласовать циклы Юпитера (5x12=60) и Сатурна (2x30=60).
Гармонию Вселенной с давних времен символизировали пять "правильных" геометрических тел, называемых "Платоновыми телами". Особую роль при этом играл додекаэдр - правильный 12-гранник, гранями которого являются правильные пятиугольники ("пентаграммы"). Отсюда следует, что число углов на поверхности додекаэдра равно 5x12=60 (что соответствует 60-летнему циклу). Додекаэдр имеет 30 ребер (что соответствует циклу Сатурна) и 12 граней (что соответствует циклу Юпитера), а произведение этих чисел 30x12=360. Следуя магической числовой символике додекаэдра, которая отражала числовую гармонию циклов Юпитера и Сатурна, древние вавилоняне и выбрали число 60 в качестве основания своей системы счисления, а древние египтяне пришли к мысли разбить год на 12 месяцев (число граней додекаэдра), каждый из которых содержал ровно 30 дней (число ребер додекаэдра). Таким и был египетский календарь, созданный в четвертом тысячелетии до н.э. В этом календаре год состоял из 365 дней. Он делился на 12 месяцев по 30 дней каждый, в конце года добавлялось пять праздничных дней, которые, однако, не входили в состав месяцев. Заметим, что в своей системе измерения времени и угловых величин египтяне также использовали "магические" числа додекаэдра (1 сутки = 24 (2x12) часа, 1 час = 60 минут, 1 минута = 60 секунд, 2p=360╟, 1╟=60').
Появление позиционной системы обозначения чисел считается одной из основных вех в истории материальной культуры. В ее создании принимали участие целые народы. В 6 в. н.э. подобная система возникла у племени майя. Наиболее распространено мнение, что основанием системы счисления майя является число 20, имеющее "пальцевое" происхождение. Однако известно, что в системе майя есть одно отступление от двадцатеричного основания. Вес следующего за узловым числом 20 индейцы майя выбрали равным 360 (а не 400). Все последующие веса разрядов являются производными от чисел 20 и 360, которые и выступают в роли узловых чисел , образующих систему майя. Как подчеркивается в упомянутой выше статье Башмаковой И. Г. и Юшкевича А. П., это "объясняется тем, что год майя делили на 18 месяцев, по 20 дней в каждом, плюс еще пять дней". Таким образом, как и основание вавилонской системы, узловые числа системы майя имеют астрономическое происхождение. Существенно подчеркнуть, что годовой календарь майя по своей структуре (360+5) совпадал с египетским календарем. Учитывая высокий уровень развития культуры майя, можно высказать предположение, что майя были знакомы с "платоновыми телами" и что их годовой календарь был связан с икосаэдром - правильным телом, двойственным додекаэдру. Икосаэдр представляет собой правильный 20-гранник, гранями которого были правильные треугольники (отсюда деление месяца на 20 дней в календаре майя и выбор числа 20 в качестве первого узлового числа их системы счисления). Икосаэдр имеет 30 ребер (как и у додекаэдра) и 12 вершин (30x12=360). В каждой вершине сходится 5 углов, то есть общее число углов на поверхности икосаэдра равно 5x12=60. Таким образом, числовые характеристики икосаэдра также связаны с 12-, 30- и 60-летними циклами Солнечной системы.
Мы для повседневных вычислений используем десятичную систему счисления, предшественницей которой является индусская десятичная система, возникшая примерно в XII-м столетии нашей эры. Известный французский математик Лаплас (1749-1827) выразил свое восхищение позиционным принципом и десятичной системой в следующих словах:
"Мысль выражать все числа девятью знаками, придавая им, кроме значения по форме, еще значение по месту, настолько проста, что именно из-за этой простоты трудно понять, насколько она удивительна. Как нелегко было прийти к этой методе, мы видим на примере величайших гениев греческой учености Архимеда и Аполлония, от которых эта мысль осталась скрытой".
Убежденным сторонником использования индо-арабской десятичной системы счисления в торговой практике был известный итальянский математик Леонардо Пизанский (Фибоначчи), получивший математическое образование в арабских странах. В своем сочинении "Liber abaci" (1202) он писал:
"Девять индусских знаков - суть следующие: 9, 8, 7, 6, 5, 4, 3, 2, 1. С помощью этих знаков и знака 0, который называется по-арабски zephirum, можно написать какое угодно число".
Здесь словом "zephirum" Фибоначчи передал арабское "as-sifr" , являющееся дословным переводом индусского слова "sunya", то есть "пустое",служившее названием нуля. Слово "zephirum" дало начало французскому и итальянскому слову "zero" (нуль). С другой стороны, то же арабское слово "as-sifr" было передано через "ziffer", откуда произошли французское слово "chiffre", немецкое "ziffer", английское "cipher" и русское "цифра".
Что касается выбора числа 10 в качестве основания десятичной системы счисления, то существует общепринятое мнение, что оно имеет "пальцевое" происхождение. Однако не следует забывать, что в древней науке число 10 всегда несло в себе особую смысловую нагрузку. Пифагорейцы называли его четверицей или тетрактидой. Говоря словами Эмпедокла в нем - "вечно текущей природы : корень источный". Четверица 10 = 1 + 2 + 3 + 4 считалась у пифагорейцев одной из высших ценностей и являлась "символом всей Вселенной", так как содержала в себе четыре "основных элемента": единицу или "монаду", обозначающую, по Пифагору, дух, из которого проистекает весь видимый мир; двойку, или "диаду" (2 = 1 + 1), символизирующую материальный атом; тройку, или "триаду" (3 = 2 + 1), то есть символ живого мира; и наконец, четверку, или "тетраду", (4 = 3 + 1), соединявшую живой мир с монадой и поэтому символизировала целое, то есть "видимое и невидимое". А поскольку тетрактида 10 = 1 + 2 + 3 + 4, то она выражала собой "Все". Таким образом, гипотеза о "гармоничном" происхождении числа 10 имеет не меньшее право на существование, как и "пальцевая".
В современной науке с развитием компьютерной техники на первые роли выдвинулась двоичная система счисления. Ее зачатки наблюдаются у многих народов. Например, у древних египтян широкое распространение получили методы умножения и деления, основанные на принципе удвоения. Изобретение двоичного способа нумерации приписывают китайскому императору Фо Ги, жизнь которого относится к 4-му тысячелетию до новой эры. Оказывается, к открытию двоичной системы счисления имели отношение многие математики, в частности, Фибоначчи. В своей книге "Liber abaci" он сформулировал "задачу о выборе наилучшей системы весовых гирь для взвешивания грузов на рычажных весах". В русской историко-математической литературе эта задача известна под названием Баше-Менделеева в честь французского математика 17-го века Баше де Мезириака, поместившего ее в своем "Сборнике приятных и занимательных задач" (1612 г.), и выдающегося русского химика Дмитрия Ивановича Менделеева, который к концу жизни стал директором Главной Палаты мер и весов России и интересовался этой задачей по долгу своей службы.
Известно два варианта решения задачи Баше-Менделеева. Первый предполагает, что гири разрешается класть только на одну, свободную от груза чашу весов; при этом оптимальным решением является "двоичная система гирь": 1, 2, 4, 8, 16,:, которая при взвешивании "порождает" двоичный способ представления чисел. При втором варианте гири разрешается класть на обе чаши весов; оптимальным решением при этом является "троичная система гирь": 1, 3, 9, 27,:, которая при взвешивании "порождает" троичную симметричную систему счисления, которая и была положена Н. П. Брусенцовым в основу троичного компьютера "Сетунь".
Но автор двоичной арифметики в истории науки доподлинно известен: это известный немецкий математик Лейбниц (1646-1716), который в 1697 г. разработал правила двоичной арифметики. Лейбниц настолько был восхищен своим открытием, что в его честь выпустил специальную медаль, на которой были даны двоичные изображения начального ряда натуральных чисел - возможно, это был тот редкий случай в истории математики, когда математическое открытие было удостоено такой высокой почести.
Лейбниц, однако, не рекомендовал двоичную арифметику для практических вычислений вместо десятичной системы, но подчеркивал, что "вычисление с помощью двоек, то есть 0 и 1, в вознаграждение его длиннот является для науки основным и порождает новые открытия, которые оказываются полезными впоследствии, даже в практике чисел, а особенно в геометрии: причиной чего служит то обстоятельство, что при сведении чисел к простейшим началам, каковы 0 и 1, всюду выявляется чудесный порядок".
Блестящие предсказания Лейбница сбылись только через два с половиной столетия, когда выдающийся американский ученый, физик и математик Джон фон Нейман предложил использовать именно двоичную систему счисления в качестве универсального способа кодирования информации в электронных компьютерах ("Принципы Джона фон Неймана").
Таким образом, как подчеркивают многие выдающиеся математики, открытие вавилонянами позиционного принципа, а затем индусами десятичной системы счисления, основанной на позиционном принципе, а также разработку Лейбницем двоичной арифметики по праву можно отнести к разряду действительно эпохальных математических открытий, существенно повлиявших на развитие материальной культуры, в частности, на развитие компьютерной техники.
Почему же в теории чисел и в теоретической арифметике системам счисления не уделялось того внимания, которого они несомненно заслуживали? Все дело - в традиции. В античной науке, достигшей высокого уровня развития, впервые произошло сохранившееся до наших дней разделение математики на "высшую" куда относились геометрия и теория чисел, и "логистику" - прикладную науку о технике арифметических вычислений ("школьная" арифметика), геометрических измерениях и построениях. Уже со времени Платона логистика третировалась как низшая, прикладная дисциплина, не входящая в круг образования философа и ученого. Восходящее к Платону пренебрежительное отношение к школьной арифметике и ее проблемам, а также отсутствие какой-либо достаточно серьезной потребности в создании новых систем счисления в практике вычислений, которая в течение последних столетий всецело удовлетворялась десятичной системой, а в последние десятилетия - двоичной системой (в информатике), может служить объяснением того факта, что в теории чисел системам счисления не уделялось должного внимания и в этой части она не намного ушла вперед по сравнению с периодом своего зарождения.
Ситуация резко изменилась после появления современных компьютеров. Именно в этой области опять проявился интерес к способам представления чисел и новым компьютерным арифметикам. Все дело в том, что классическая двоичная система счисления обладает рядом принципиальных недостатков, главными из которых являются: проблема представления отрицательных чисел и "нулевая" избыточность классического двоичного способа представления чисел.
Особенно неприятен второй недостаток. "Нулевая" избыточность двоичного представления означает, что в системе счисления отсутствует механизм обнаружения ошибок, которые, к сожалению, неизбежно возникают в компьютерных системах под влиянием внешних и внутренних факторов. В условиях, когда человечество все больше становится заложником компьютерной революции и все чаще полагается на компьютер при решении сложнейших задач управления ракетами, самолетами, атомными реакторами, вопрос об эффективных механизмах обнаружения ошибок выдвигается на передний план. Ясно, что компьютеры, основанные на двоичной системе счисления, не всегда могут эффективно решать эту проблему.
Чтобы преодолеть указанные недостатки двоичной системы, уже на этапе зарождения компьютерной эры был выполнен ряд проектов и сделано несколько интересных математических открытий, связанных с системами счисления. Пожалуй, наиболее интересным проектом в этом отношении является троичный компьютер "Сетунь", разработанный в Московском университете под руководством Н. П. Брусенцова. Использование в нем так называемой троичной симметричной системы счисления для представления чисел впервые в истории компьютеров поставило знак равенства между отрицательными и положительными числами, позволив отказаться от различных "ухищрений" (обратный и дополнительный код), используемых для представления отрицательных чисел. Это обстоятельство, а также использование "троичной логики" при создании программ привело к созданию весьма совершенной архитектуры, которая и была воплощена в модели "Сетуни". Именно "Сетунь" является наиболее ярким историческим примером, подтверждающим влияние системы счисления на архитектуру компьютера!
Однако на заре компьютерной эры было сделано еще два открытия в области позиционных способов представления чисел, которые, однако, мало известны и которые в тот период не привлекли особого внимания математиков и инженеров.
В 1939 г. бельгийский врач Эдуард Цекендорф, увлекавшийся числами Фибоначчи, опубликовал статью, посвященную так называемым "суммам Цекендорфа". Под представлением Фибоначчи-Цекендорфа понимается следующий позиционный способ представления чисел:
N = anF(n) + an-1F(n-1) + ... + ai F(i) + ... + a1F(1); (1)
где a i = {0, 1} - двоичная цифра i-го разряда представления; n - разрядность представления; F(i) - число Фибоначчи, задаваемое с помощью следующего рекуррентного соотношения:
F(i) = F(i-1) + F(i-2);
F(1) + F(2) = 1;
Однако наиболее революционным предложением в современной теории систем счисления по праву можно считать систему счисления с иррациональным основанием, предложенную в 1957 г. американским математиком Джорджем Бергманом. Под "Тау-системой", или системой Бергмана, понимается следующий способ представления действительного числа А:
A= Реклама
Мнение авторов может не совпадать с мнением редакции сайта
Перепечатка материалов без ссылки на наш сайт запрещена |