История возникновения чисел — История чисел и систем счисления
Считать люди научились еще в незапамятные времена. Сначала они различали просто один или много предметов. Прошли сотни лет, прежде чем появилось число 2. Счет парами оказался очень удобен, и не случайно у некоторых племен Австралии и Полинезии до последнего времени были только два числительных: один и два, а все числа больше двух получали название в виде сочетания этих двух числительных. Например, три — «один, два»; четыре — «два, два»; пять — «два, два, один». Позже появились особые названия для чисел. Сначала для небольших чисел, а потом для все больших и больших. Число — одно из основных понятий математики, позволяющее выразить результаты счета или измерения. Пальцы всегда при нас, то и считать стали по пальцам. Таким образом, наиболее древней и простой «счетной машиной» издавна являются пальцы рук и ног.
Запоминать большие числа было трудно, и поэтому кроме пальцев рук и ног «задействовались» другие «приспособления». Например, перуанцы использовали для этого разноцветные шнурки с завязанными на них узлами. Веревочные счеты с узелками были в ходу в России, а также во многих странах Европы. До сих пор иногда завязывают узелки на носовых платках на память.
Засечки на палочках применяли в торговых сделках. Палочки после окончания расчетов разламывали пополам, одну половинку брал кредитор, а другую — должник. Половинка играла роль «квитанции». В деревнях использовали счеты в виде зарубок на палках.
На более высокой стадии развития люди при счете стали применять разные предметы: использовали камешки, зерна, веревку с бирками. Это были первые счетные приборы, которые, в конце концов, привели к образованию разных систем счисления и к созданию современных быстродействующих электронных вычислительных машин.
Мысль выражать все числа знаками
настолько проста, что именно из-за
этой простоты сложно осознать,
сколь она удивительна.
Пьер Симон Лаплас (1749-1827), франц. астроном, математик, физик.
Фиеричная система счисления, или почему 1 + 10 = 100 / Хабр
«10.01 х 10.01 = 1000.1001»Джордж Оруэлл. «1010001001001000.1001001000100001»
Существует ли позиционная система счисления с иррациональным основанием, в которой все натуральные числа записываются конечным числом цифр? В которой число больше единицы, не имеющее цифр после запятой, наверняка
Существует. Зовётся она системой Бергмана, или системой счисления с основанием Φ (читается как «фи», это буква греческого, а не русского алфавита). Число Φ, называемое также золотым числом или постоянной золотого сечения, имеет следующую формулу:
Далее по тексту я иногда буду называть её фиеричной (по аналогии с, допустим, восьмеричной) системой счисления, а иногда не буду.
Что это такое?
Фиеричная система счисления — это обычная позиционная система счисления с необычным основанием. Если в общеупотребительной десятичной системе счисления каждая цифра соответствует некоторой степени десятки (123 = 1∙10
Откуда есть пошла?
Как нетрудно догадаться исходя из названия, система Бергмана была придумана неким Бергманом. Возможно, у вас возник вопрос, что за харизматичный бородач изображён в начале статьи. Так вот, это Джордж Бергман, матеметик-алгебраист, профессор Калифорнийского университета в Беркли. Он родился в Бруклине в 1943 году, а четырнадцать лет спустя, когда у него ещё не было ни бороды, ни докторской степени, но уже имелось воображение и интерес к абстрактной алгебре, опубликовал статью в Mathematics Magazine, в которой описал открытую им систему счисления (сам он называл её «тау-система»), её основные свойства и правила арифметических действий в ней. В своей статье он с достойной уважения скромностью признался, что «не видит никакого полезного применения для систем счисления, подобных этой, помимо развлечения и зарядки для ума». Время показало, однако, что в своей оценке он был не вполне прав. Однако о применении фиеричной системы счисления мы поговорим позднее.
Чем интересна?
таких даже больше, их континуум. А систем счисления, где натуральное число записывается конечным количеством цифр, лишь счётное множество.
Строго говоря, этим свойством обладает любая система с трансцендентным основанием и достаточным набором цифр. В пи-ичной, е-ичной и даже в е-в-степени-пи-ичной системе счисления все натуральные числа, превосходящие единицу, будут записываться в виде бесконечной дроби.
Система Бергмана отличается и от первой, и от второй группы. В ней любое натуральное число, большее единицы, имеет ненулевое, но конечное количество цифр после запятой. Например:
2 = 10.01Ф
5 = 1000.1001Ф
42 = 10100010.00100001Ф
451 = 1010000001010.000100000101Ф
1984 = (см. эпиграф)
Просторечно выражаясь, это немного рвёт шаблон. Мы привыкли, что понятия «знаки после запятой» и «дробная часть» очевидным образом взаимосвязаны. Однако в фиеричной системе дробная часть может равняться нулю, а количество цифр после запятой при этом — не равняться. Более того, можно доказать, что если количество цифр после запятой равняется нулю, то во всех случаях кроме нуля и единицы ненулевая дробная часть неиллюзорно присутствует.
Пусть у числа есть единицы старше нулевого разряда. Они, как мы уже выяснили, будут соответствовать неким
натуральным степеням Ф. Записав эти степени, раскрыв и сложив их, мы получим число вида a + b√5, где a и b рациональны, а b к тому же строго положительно, как сумма некоторого количества биномиальных коэффициентов, умноженных на некоторое количество пятёрок и делённых на сколько-то двоек. Очевидно, такое число не может быть рациональным, а значит, и целым.
Кроме целых чисел, конечным количеством знаков в фиеричной системе счисления записываются также числа из ℤ(Ф), то есть все числа вида:
Как, возможно, заметил внимательный читатель, ни в одной из фиеричных записей, приведённых выше, не было случая, когда две единицы идут подряд. Это не случайно. Как и в фибоначчиевой системе счисления, в системе Бергмана единица старшего разряда равняется сумме двух единицы помладше. Иначе говоря, 100Ф = 11Ф. Это обусловлено уникальным свойством золотого сечения: Ф
Как в неё переводить?
Для натуральных чисел Бергман предлагал следующий алгоритм: если мы знаем запись числа n, то смотрим, что у неё за цифра в нулевой позиции, перед запятой. Если там нуль, записываем туда единицу и получаем n+1. если там уже единица, то мы денормализуем запись числа, применяя к этой единице правило 100 = 11. Если при этом одна из вновь образовавшихся единиц попадает на место, уже занятое другой единицей, предварительно преобразуем её, и так далее. Затем в денормализованной записи меняем нуль на единицу и нормализуем обратно. Например:
4 = 101.01
5 = 101.1111Ф = 110.0111Ф = 1000.0111Ф = 1000.1001Ф
Из доказательства корректности этого алгоритма (которое я оставляю на совесть читателя) следует, в частности, что любое натуральное число имеет конечное представление в фиеричной системе счисления. Я уже говорил об этом раньше, но теперь вы не обязаны верить мне на слово.
Этот алгоритм обладает достаточно грустной временной сложностью. Можно оптимизировать его следующим образом: вместо тупого прибавления единицы мы будем поочерёдно умножать на два и при необходимости прибавлять единицу (так, например, мы получаем значение числа из его двоичной записи). Однако умножение на два, оно же сложение числа с самим собой, в системе Бергмана — не вполне тривиальная операция, о чём мы поговорим чуть позже.
С другой стороны, мы можем за линейное время найти фиеричную запись числа тупо по определению. Этот алгоритм можно приблизительно описать следующим js-кодом:
const Phi = (Math.sqrt(5)+1)/2; function toPhiBase(n){ var power = 1; var result = ""; while(power <= n){ power *= Phi; } while(n > 0){ if(power == 1){ result += "."; } power /= Phi; if(power <= n){ n -= power; result += 1; }else{ result += 0; } } return result; }
Увидев этот код, человек, знакомый с программированием, конечно, должен приуныть. В голове его должны пронестись мысли о числах с плавающей точкой, потере точности, тщетности бытия… И действительно, приведённая функция будет работать некорректно для хоть капельку большого числа, вроде того же 1984. Реализация подкачала, но это не значит, что плоха сама идея.
Если мы работаем с числами с плавающей точкой, потеря точности практически неизбежна. Но можно не работать с такими числами. Можно вести все операции в поле ℚ(√5) (то есть в поле, состоящем из чисел вида a + b√5, a, b ∈ ℚ). Действия над такими числами можно реализовать, используя только операции над рациональными числами. А операции над рациональными числами можно реализовать, используя только сложение, вычитание и умножение целых чисел, которые к потере точности не приводят. Короче говоря, можно написать свою маленькую символьную арифметику. А я всегда хотел её написать.
Как только я понял, насколько страдают обитатели интернета без возможности переводить числа в систему Бергмана и обратно, я немедленно наваял npm-модуль, основанный на вышеописанном подходе. Теперь каждый может самостоятельно проверить, не ошибся ли я в фиеричной записи числа 42, введя в консоль что-то типа:
npm install phibase node var PhiBase = require("phibase") PhiBase.toPhiBase(42)
Те, у кого по каким-то неясным причинам не установлены node и npm, могут воспользоваться онлайн-конвертером
Кстати о переводе обратно. Тут опять же есть несколько подходов. Можно в стиле Бергмана вынимать из числа по единичке, при необходимости денормализуя его запись. Можно посчитать по определению в числах с плавающей точкой, смирившись с потерей точности (алгоритм приводить не буду, он вполне очевиден). Или, имея дело с рациональными числами, можно опять же воспользоваться «символьными» вычислениями — в моём модуле, как вы могли догадаться, используется именно этот способ.
Скрытый текстЯ взял слово «символьные» в кавычки, потому что настоящие символьные вычисления — это, разумеется, куда более крутая и мощная штука, чем написанные мной классы рациональных и корень-из-пятерично-рациональных чисел.
Как в ней работать?
Краткий ответ: с трудом.
В системе Бергмана не работают классические алгоритмы сложения и вычитания. Как мы помним, 1Ф + 1Ф = 10.01Ф. Это означает, что при попытке сложения «в столбик» возникающие переносы будут идти как влево, так и вправо. Это лишает нас надежды просто взять числа с какого-то конца и складывать, перенося излишки в другой конец. Один из подходов к сложению в фиеричной системе состоит в том, что для начала мы складываем числа просто как векторы цифр (10.01 + 101.01 = 111.02), а затем как-то нормализуем запись. Оригинальный (в смысле, изначальный) подход, предложенный Бергманом, состоял в следующем: выписав числа одно над другим, денормализуем их таким образом, чтобы в одном и том же разряде не находились две единицы. После этого сложим их поразрядно (сложение нуля с единицей или нуля с нулём уже не представляет трудности для тренированного математика), затем нормализуем сумму.
Этот подход показался мне настолько забавным, что я написал небольшую игру, которая позволяет игроку ощутить всю его прелесть лично.
Скрытый текстЗаодно я попрактиковался в использовании фреймворка Phaser.js, поэтому не исключено, что в будущем я напишу ещё более крутую игру, про деревянные домики и теорему Кёртиса-Хедланда-Линдона. Но, разумеется, не раньше, чем через джва года.Умножение и деление, впрочем, реализуются более или менее стандартным образом — умножаем в столбик, делим уголком.
И на кой она нужна?
По-хорошему, этот раздел должен писать не я, а какой-нибудь суровый инженер советской закалки. Насколько мне известно, система Бергмана использовалась в некоторых АЦП. Предполагалось использовать её избыточность для большей помехоустойчивости, однако «железная» реализация такого преобразователя оказалась склонна к ошибкам, и идею отправили в ящик. Я бы с удовольствием рассказал больше, но не могу, и честно признаюсь в своей некомпетентности. Надеюсь, кто-то из читателей знает больше — в таком случае я с удовольствием размещу здесь ссылку на его содержательный комментарий.
janatem подсказывает в своих комментариях, что если добавить в систему Бергмана специальную цифру «-1», то получившаяся в результате симметричная система счисления будет обладать очень полезным свойством: возможностью параллельного поразрядного сложения. Иначе говоря, в ней можно получить некоторую цифру суммы чисел, не вычисляя для этого предыдущие. В десятичной системе счисления такое невозможно: чтобы наверняка знать, с какой цифры будет начинаться сумма 999995 + x (x — цифра), нам обязательно нужно знать значение x, несмотря на то, что эта цифра находится за пять разрядов от той, которая нас действительно интересует. Такую независимость разрядов можно использовать для радикального ускорения вычислений на определённых архитектурах.
Ах да, чуть не забыл. Ещё фиеричную систему счисления можно использовать для перемножения целых чисел. Делается это следующим образом:
- Одно из чисел переводится в фиеричную систему счисления и записывается куда-нибудь, желательно на клетчатую бумагу.
- Другое выписывается в клетку под нулевым разрядом первого числа.
- Слева от второго числа пишем произвольное третье число — вообще любое.
- Ряд из второго и третьего числа продолжаем влево и вправо таким образом, чтобы каждое число в ряду равнялось сумме двух чисел справа от него. Получается нечто вроде ряда Фибоначчи, только построенного на других начальных числах и направленного справа налево.
- Просуммируем все числа в этом ряду, над которыми написаны единицы. Эта сумма и будет искомым произведением
Шаг 1. 1 |0 |1.|0 |1 --+--+--+--+-- | | | | Шаг 2. 1 |0 |1.|0 |1 --+--+--+--+-- | |9 | | Шаг 3. 1 |0 |1.|0 |1 --+--+--+--+-- |13|9 | | Шаг 4. 1 |0 |1.|0 |1 --+--+--+--+-- 22|13|9 |4 |5 Шаг 5. 22 + 9 + 5 = 36
Если у вас плохо с умножением, но вы умеете быстро переводить числа в фиеричную систему счисления и строить фибоначчиобразные ряды, этот метод определённо для вас. Доказательство же его корректности основано на том, что при денормализации записи вверху сумма чисел под её единицами не изменится.
И это всё?
Есть ещё несколько вещей, которые я бы хотел сказать напоследок. Во-первых, если вы как следует помучили мой онлайн-конвертер, то могли заметить, что дробные числа в фиеричной системе счисления, как и в любой другой позиционной, записываются в виде периодической дроби. Доказательство этого факта основывается на делении уголком и опять же не отличается от доказательства, проведённого в системе счисления здорового человека.
Во-вторых, я вам наврал, когда говорил об «уникальном свойстве золотого сечения». Оно, конечно, уникально, но не совсем. Уравнение x2 = x + 1 имеет ещё одно решение, равное
В системе с основанием φ— (назовём её антифиеричной) сохраняются все свойства фиеричной системы, которые выводятся из тождества 100Ф = 11Ф. В частности, в ней имеют конечную запись все целые числа (причём ту же самую, что и в фиеричной системе). Это особенно забавно, потому что новое основание не только иррационально, но ещё и отрицательно и по модулю меньше единицы. Можно доказать даже следующую теорему: если число имеет одну и ту же конечную запись в фиеричной и антифиеричной системе счисления, то оно целое.
И наконец, в фиеричной системе счисления формулу числа Ф можно переписать следующим образом:
Цимес в том, что приведённая формула, если рассматривать её как уравнение, имеет единственное действительное решение. То есть её в самом деле можно использовать как определение числа Ф.
Вдумайтесь в это.
Компьютеры Советской России с троичной сбалансированной системой счисления / Хабр
«Возможно, самая красивая система счисления — это сбалансированная троичная» — Дональд Е. Кнут, Искусство программирования, Издание 2.
Многие знают, что компьютеры хранят данные и работают с ними с помощью двоичной системы счисления. Одно из главных объяснений этому можно найти в схеме современных компьютеров, которые состоят из миллиардов простых и массово производимых транзисторов и конденсаторов, которые могут вместе представлять два состояния: высокое напряжение (1
) и низкое напряжение (0
).
Такая конструкция сегодня настолько распространена, что трудно себе представить, как компьютеры могут работать иначе. Но, в Советской России 50-х годов они работали иначе. Если вы вдруг не слышали про такое, загуглите «Сетунь» — сбалансированный трехкомпонентный компьютер, разработанный в 1958 году небольшой группой во главе с Брусенцовым, в МГУ.
Перед тем, как говорить о Брусенцове и Сетуни, давайте я немного объясню вам троичную сбалансированную систему счисления.
Тернарная или троичная — это система счисления, в которой есть три вероятных значения: 0
, 1
и 2
. В её сбалансированной версии существуют три вероятности -1
, 0
и +1
, часто упрощённые до -
, 0
и +
соответственно.
В такой форме троичные значения подразумеваются в виде «централизованных» вокруг средней точки 0
. Применяются те же правила, как и к любой другой системе счисления: самый правый символ, R
, имеет собственное значение, а каждый последующий символ имеет значение, умноженное на основание B
, возведенное в степень равную расстоянию D
от R
.
Эмм, давайте я просто приведу пример. Давайте запишем 114
:
+++-0 = (1 * 3^4) + (1 * 3^3) + (1 * 3^2) + (-1 * 3^1) + 0
= 81 + 27 + 9 + -3
= 114
И в бинарной (двоичной):
1110010 = (1 * 2^6) + (1 * 2^5) + (1 * 2^4) + 0 + 0 + (1 * 2^1) + 0
= 64 + 32 + 16 + 2
= 114
И, для уверенности, те же правила, применённые при десятичной системе счисления:
114 = (1 * 10^2) + (1 * 10^1) + (4 * 10^0)
= 100 + 10 + 4
= 114
Круто?
Что если мы хотим представить -114
? В двоичной и десятичной системах нам понадобится использовать новый символ: знак (sign). В основной памяти двоичного компьютера это осуществляется либо через хранение ведущего бита, указание знака или значительное уменьшение количества чисел, которые мы можем представить1. Именно по этой причине мы говорим о signed
и unsigned
в языках программирования.
Но в симметричной троичной системе, как мы узнаем позже, чтобы представить обратную величину числа (инвертированное число), нам просто нужно поменять все «+» на «-» и наоборот. Нам не нужна какая-то дополнительная информация, чтобы указать знак!
Вот смотрите:
---+0 = (-1 * 3^4) + (-1 * 3^3) + (-1 * 3^2) + (1 * 3^1) + 0
= -81 + -27 + -9 + 3
= -114
Чуть позже мы увидим, что это и несколько других свойств сбалансированной троичной системы дают нам некоторые очень интересные вычислительные преимущества. Но сейчас, давайте вернемся к разговору о компьютере Сетунь.
В конце 50-х годов в мире компьютеров был захватывающий период: Натаниэль Рочестер и его команда в IBM недавно разработали первый серийно выпускаемый компьютер с хранящейся в памяти программой, так называемый «современный» компьютер IBM 701. Джон Бэкус со своей командой изобрели FORTRAN, первый язык программирования высокого уровня, который обрёл широкое применение. И, пожалуй, самое главное — начали развиваться первые целиком транзисторные компьютеры, такие как TX-0 и Philco Transac S-2000. Было задано направление для разработки двоичных компьютеров, которые позже стали доминировать.
Но это было в Северной Америке.
В то же время в России группа математиков и инженеров под руководством Брусенцова и его коллеги Сергея Соболева разрабатывает другие компьютерные системы2. Брусенцов и его коллеги исследуют множество западных компьютеров и технологических достижений, и осмысливают применение транзисторов для представления двоичных данных. Но давайте вспомним, что это СССР — транзисторы не так легко доступны за железным занавесом. А электронные лампы трубки одинаково отстойны как в России, так и на Западе!
Поэтому Брусенцов разрабатывает базовый элемент из миниатюрных ферритовых сердечников и полупроводниковых диодов, который способен работать как регулируемый трансформатор тока. Он оказывается эффективной базой для реализации троичной логики3. Было установлено, что эти элементы, по сравнению с их двоичными аналогами, обеспечивают более высокую скорость и надежность и требуют меньше мощности для работы.
Команда из десяти человек буквально построила Сетунь из ничего, работая в небольшой комнате, заполненной лабораторными столами (которые они же сами и построили!). Каждое утро члены команды собирали пять простых машинных элементов. Они брали ферритовые сердечники и, используя обычную швейную иглу, наматывали на каждый по 52 мотка проволоки. Ядра затем передавали техникам, которые завершали процесс сборки и монтировали их в блоки.
Троичная логика была реализована через объединение двух таких ферритовых элементов и подключения их таким образом, что они моделировали три устойчивых состояния. Этот подход был успешным, но количество необходимых элементов не сокращалось, поскольку в действительности два ферритовых сердечника могут потенциально представлять собой два двоичных бита, что в итоге даёт больший объём информации (2 ^ 2), чем один троичный «трит» (3 ^ 1), Печально, но хотя бы потребляемая мощность была снижена!
Сетунь оперирует числами до 18 тритов, то есть один трит может моделировать любое число между -387 420 489
и 387 420 489
. Двоичному компьютеру требуется как минимум 29 битов для достижения такой мощности.
Разработка Сетуни длилась два года, несмотря на то, что система была способна производить операции уже через десять дней с начала испытаний, а в то время подобное было беспрецедентным. Всего было выпущено около 50 машин. И хотя компьютеры Сетунь безотказно работали в течение многих лет в экстремальных российских климатических условиях, проект разрывали противоречия.
В большей степени из-за неспособности завода-изготовителя оправдать массовое производство того, что они расценивали как дешёвую область науки и «плод университетской фантазии». Думаю, можно с уверенностью предположить, что Россия тогда просто была не готова понять потенциальную важность вычислительных машин. В конце концов, машины Сетунь были заменены двоичными аналогами, которые справлялись с вычислениями с той же эффективностью, но стоимость эксплуатации была выше чем в два раза!
Как я уже рассказал, в ней нет необходимости хранить ведущий бит, точнее трит, чтобы указывать знак. А значит, нет понятия целых чисел со знаком или без знака — всё это просто целое число. Таким образом, вычитание достигается простым инвертированием операнда и применением сложения (которое реализуется аналогично компьютерам с двоичной системой). Эта плюс-минус консистенция также может сократить количество переносов, которые требуются для операций умножения.
Ещё одна полезная черта сбалансированной троичной системы (или любой симметричной системы счисления, раз на то пошло) это вероятность реализовать округление чисел с плавающей точкой, явным выделением целой части числа, что даёт возможность упрощённой реализации деления. Это благодаря тому как троичная система выводит дробную часть действительных чисел.
Давайте я приведу простой пример. Перевод в код числа 0.2
выглядит следующим образом:
0.+--+ = 0 + (1 * (3^-1)) + (-1 * (3^-2)) + (-1 * (3^-3)) + (1 * (3^-4))
= 0.33 + -0.11 + -0.03 + 0.01
= 0.2
И для записи 0.8
нужно начать с + в старшем разряде, а затем просто инвертировать дробную часть (например, 1 + -0,2):
+.-++- = 1 + (-1 * (3^-1)) + (1 * (3^-2)) + (1 * (3^-3)) + (-1 * (3^-4))
= 1 + -0.33 + 0.11 + 0.03 + -0.01
= 0.8
Выше видно, что выделение целой части тритов справа от поразрядной точки эквивалентно округлению: 0,2 становится нулём, а 0,8 становится единицей. Круто!
Ок, возвращаемся к Сетуни в последний раз. В конце 60-х Брусенцов разработал более современную машину «Сетунь-70», которая воплотила тернарность более чётко. Было введено понятие «трайт», который состоял из 6 тритов (примерно 9,5 битов). Компьютер Сетунь-70 был стековым, и поэтому вместо машинных инструкций, которые намеренно назвали регистрами для ввода и вывода, все операции выполнялись в двух стеках — одном для операндов (вход) и одном для возвращаемых значений (выход). Для того, чтобы приспособить этот дизайн, машинные инструкции были написаны в обратной бесскобочной нотации (обратной польской нотации или постфиксной записи).
В конце 70-х годов, Брусенцов и несколько его учеников разработали язык программирования для Сетунь-70, который назвали Диалоговая система структурированного программирования (ДССП). Проводя своё исследование4, я заметил, что это стек-ориентированный язык (что, правда, совсем не удивительно), аналогичный Forth и использует обратную польскую нотацию. Это позволяет писать программы на языке относительно высокого уровня, но продолжать чувствовать себя «низкоуровнево». Настолько, что у его авторов было следующее сообщение:
ДССП не был изобретен. Он был открыт. Поэтому у языка нет версий, только расширения.
Рассмотрим программу на ДССП, которая складывает группу цифр:
1 2 3 4 DEEP 1- DO +
Давайте попробуем разложить её. В первой колонке у нас команда, во второй — состояние компьютера после выполнения (стека операндов), а в третьей я даю объяснение:
1 [1] Добавить 1 в стек.
2 [2 1] Добавить 2 в стек.
3 [3 2 1] Добавить 3 в стек.
4 [4 3 2 1] Добавить 4 в стек.
DEEP [4 4 3 2 1] Добавить "глубину стека" (4) в стек.
1- [-1 4 4 3 2 1] Добавить -1 в стек.
DO [4 3 2 1] Начать цикл, удалить два элемента из стека. Для управления циклом первый элемент применяется ко второму пока не получится 0.
+ [] Применить оператор "+" до завершения цикла,
каждый раз удаляя верхний элемент из стека операндов, применяя + и добавляя вывод в стек возвратов.
По окончанию исполнения, стек операндов будет пустым, а в стеке возвратов будет [10]
.
О ДССП подробней написано на сайте Ивана Тихонова (авторы Сидоров С.А. и Шумаков М.Н.).
Развитие сбалансированных тернарных компьютеров практически перешло в небольшую сноску в анналах компьютерной истории. И в то время, как исследование клеток памяти, способных эффективно представлять три различных состояния было незначительным, некоторые достижения в этой области всё же были.
А именно, японские исследователи в конце 90 -х годов описали возможность использовать переход Джозефсона для реализации троичной логики. Этого можно было достичь за счет циркуляции сверхпроводящих токов — положительного (по часовой), отрицательного (против часовой стрелки), или нулевого. Они обнаружили, что это даёт ячейкам памяти «высокоскоростную способность вычислений, низкое энергопотребление и очень простую конструкцию с меньшим количеством элементов, благодаря тернарной операции».
Но я не думаю, что в ближайшем будущем вы часто будете сталкиваться с понятием сбалансированного тернарного компьютера. И что ДССП станет прорывом у агрессивных поклонников языков программирования — тоже. Но я считаю, что из прошлого можно извлечь много мудрых решений5.
(Перевод Наталии Басс)
Сноски:
- Это зависит от того, как конкретная машина представляет числа. Дополнительный код — это представление чисел в десятичной системе счисления, которое даёт возможность представить от
-((2^n) / 2)
до((2^n) / 2) - 1
вn
битах.
2) Хотя компьютер Сетунь был первым электронным устройством, использовавшим для работы тернарную систему, стоит отметить, что идея использования такой системы в вычислительных устройствах впервые была популяризована более 100 лет назад. В 1840 году Томас Фаулер построил вычислительную машину целиком из дерева, и она работала с данными, используя тернарную систему.
Более точное описание можно найти на сайте российского компьютерного музея.
Справочный материал для ДССП на английском языке не слишком доступен, поэтому я предупреждаю, что мои знания ограничены и могут содержать догадки.
Мой собственный вклад можно увидеть на computerpionee.rs.
- Изображение в статье взято с сайта Московского суперкомпьютерного комплекса МГУ, на нём одна из машин Сетунь в работе.
Система счисления — Википедия. Что такое Система счисления
Системы счисления в культуре | |
---|---|
Индо-арабская | |
Арабская Тамильская Бирманская | Кхмерская Лаосская Монгольская Тайская |
Восточноазиатские | |
Китайская Японская Сучжоу Корейская | Вьетнамская Счётные палочки |
Алфавитные | |
Абджадия Армянская Ариабхата Кириллическая Греческая | Грузинская Эфиопская Еврейская Акшара-санкхья |
Другие | |
Вавилонская Египетская Этрусская Римская Дунайская | Аттическая Кипу Майяская Эгейская Символы КППУ |
Позиционные | |
2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 60 | |
Нега-позиционная | |
Симметричная | |
Смешанные системы | |
Фибоначчиева | |
Непозиционные | |
Единичная (унарная) |
Систе́ма счисле́ния (англ. numeral system или system of numeration) — символический метод записи чисел, представление чисел с помощью письменных знаков.
Система счисления:
Системы счисления подразделяются на:
Позиционные системы счисления
В позиционных системах счисления один и тот же числовой знак (цифра) в записи числа имеет различные значения в зависимости от того места (разряда), где он расположен. Изобретение позиционной нумерации, основанной на поместном значении цифр, приписывается шумерам и вавилонянам; развита была такая нумерация индусами и имела неоценимые последствия в истории человеческой цивилизации. К числу таких систем относится современная десятичная система счисления, возникновение которой связано со счётом на пальцах. В средневековой Европе она появилась через итальянских купцов, в свою очередь заимствовавших её у арабов.
Под позиционной системой счисления обычно понимается b {\displaystyle b} -ичная система счисления, которая определяется целым числом b > 1 {\displaystyle b>1} , называемым основанием системы счисления. Целое число без знака x {\displaystyle x} в b {\displaystyle b} -ичной системе счисления представляется в виде конечной линейной комбинации степеней числа b {\displaystyle b} :
- x = ∑ k = 0 n − 1 a k b k {\displaystyle x=\sum _{k=0}^{n-1}a_{k}b^{k}} , где a k {\displaystyle a_{k}} — это целые числа, называемые цифрами, удовлетворяющие неравенству 0 ≤ a k ≤ ( b − 1 ) {\displaystyle 0\leq a_{k}\leq (b-1)} .
Каждая степень b k {\displaystyle b^{k}} в такой записи называется весовым коэффициентом разряда. Старшинство разрядов и соответствующих им цифр определяется значением показателя k {\displaystyle k} (номером разряда). Обычно в записи ненулевых чисел начальные нули опускаются.
Если не возникает разночтений (например, когда все цифры представляются в виде уникальных письменных знаков), число x {\displaystyle x} записывают в виде последовательности его b {\displaystyle b} -ичных цифр, перечисляемых по убыванию старшинства разрядов слева направо:
- x = a n − 1 a n − 2 … a 0 . {\displaystyle x=a_{n-1}a_{n-2}\dots a_{0}.}
Например, число сто три представляется в десятичной системе счисления в виде:
- 103 = 1 ⋅ 10 2 + 0 ⋅ 10 1 + 3 ⋅ 10 0 . {\displaystyle 103=1\cdot 10^{2}+0\cdot 10^{1}+3\cdot 10^{0}.}
Наиболее часто употребляемыми в настоящее время позиционными системами являются:
В позиционных системах чем больше основание системы, тем меньшее количество разрядов (то есть записываемых цифр) требуется при записи числа.
Смешанные системы счисления
Смешанная система счисления является обобщением b {\displaystyle b} -ичной системы счисления и также зачастую относится к позиционным системам счисления. Основанием смешанной системы счисления является возрастающая последовательность чисел { b k } k = 0 ∞ {\displaystyle \{b_{k}\}_{k=0}^{\infty }} , и каждое число x {\displaystyle x} в ней представляется как линейная комбинация:
- x = ∑ k = 0 n − 1 a k b k {\displaystyle x=\sum _{k=0}^{n-1}a_{k}b_{k}} , где на коэффициенты a k {\displaystyle a_{k}} , называемые как и прежде цифрами, накладываются некоторые ограничения.
Записью числа x {\displaystyle x} в смешанной системе счисления называется перечисление его цифр в порядке уменьшения индекса k {\displaystyle k} , начиная с первого ненулевого.
В зависимости от вида b k {\displaystyle b_{k}} как функции от k {\displaystyle k} смешанные системы счисления могут быть степенными, показательными и т. п. Когда b k = b k {\displaystyle b_{k}=b^{k}} для некоторого b {\displaystyle b} , смешанная система счисления совпадает с показательной b {\displaystyle b} -ичной системой счисления.
Наиболее известным примером смешанной системы счисления является представление времени в виде количества суток, часов, минут и секунд. При этом величина « d {\displaystyle d} дней, h {\displaystyle h} часов, m {\displaystyle m} минут, s {\displaystyle s} секунд» соответствует значению d ⋅ 24 ⋅ 60 ⋅ 60 + h ⋅ 60 ⋅ 60 + m ⋅ 60 + s {\displaystyle d\cdot 24\cdot 60\cdot 60+h\cdot 60\cdot 60+m\cdot 60+s} секунд.
Факториальная система счисления
В факториальной системе счисления основаниями являются последовательность факториалов b k = k ! {\displaystyle b_{k}=k!} , и каждое натуральное число x {\displaystyle x} представляется в виде:
- x = ∑ k = 1 n d k k ! {\displaystyle x=\sum _{k=1}^{n}d_{k}k!} , где 0 ≤ d k ≤ k {\displaystyle 0\leq d_{k}\leq k} .
Факториальная система счисления используется при декодировании перестановок списками инверсий: имея номер перестановки, можно воспроизвести её саму следующим образом: номер перестановки (нумерация начинается с нуля) записывается в факториальной системе счисления, при этом коэффициент при числе i ! {\displaystyle i!} будет обозначать число инверсий для элемента i + 1 {\displaystyle i+1} в том множестве, в котором производятся перестановки (число элементов меньших i + 1 {\displaystyle i+1} , но стоящих правее его в искомой перестановке).
Пример: рассмотрим множество перестановок из 5 элементов, всего их 5! = 120 (от перестановки с номером 0 — (1,2,3,4,5) до перестановки с номером 119 — (5,4,3,2,1)), найдём перестановку с номером 100:
- 100 = 4 ! ⋅ 4 + 3 ! ⋅ 0 + 2 ! ⋅ 2 + 1 ! ⋅ 0 = 96 + 4 ; {\displaystyle 100=4!\cdot 4+3!\cdot 0+2!\cdot 2+1!\cdot 0=96+4;}
положим t i {\displaystyle t_{i}} — коэффициент при числе i ! {\displaystyle i!} , тогда t 4 = 4 {\displaystyle t_{4}=4} , t 3 = 0 {\displaystyle t_{3}=0} , t 2 = 2 {\displaystyle t_{2}=2} , t 1 = 0 {\displaystyle t_{1}=0} , тогда: число элементов меньших 5, но стоящих правее равно 4; число элементов меньших 4, но стоящих правее равно 0; число элементов меньших 3, но стоящих правее равно 2; число элементов меньших 2, но стоящих правее равно 0 (последний элемент в перестановке «ставится» на единственное оставшееся место) — таким образом, перестановка с номером 100 будет иметь вид: (5,3,1,2,4) Проверка данного метода может быть осуществлена путём непосредственного подсчёта инверсий для каждого элемента перестановки.
Фибоначчиева система счисления
Фибоначчиева система счисления основывается на числах Фибоначчи. Каждое натуральное число n {\displaystyle n} в ней представляется в виде:
- n = ∑ k f k F k {\displaystyle n=\sum _{k}f_{k}F_{k}} , где F k {\displaystyle F_{k}} — числа Фибоначчи, f k ∈ { 0 , 1 } {\displaystyle f_{k}\in \{0,1\}} , при этом в коэффициентах f k {\displaystyle f_{k}} есть конечное количество единиц и не встречаются две единицы подряд.
Непозиционные системы счисления
В непозиционных системах счисления величина, которую обозначает цифра, не зависит от положения в числе. При этом система может накладывать ограничения на положение цифр, например, чтобы они были расположены в порядке убывания.
Биномиальная система счисления
В биномиальной системе счисления (англ.) число x представляется в виде суммы биномиальных коэффициентов:
- x = ∑ k = 1 n ( c k k ) {\displaystyle x=\sum _{k=1}^{n}{c_{k} \choose k}} , где 0 ≤ c 1 < c 2 < ⋯ < c n . {\displaystyle 0\leq c_{1}<c_{2}<\dots <c_{n}.}
При всяком фиксированном значении n {\displaystyle n} каждое натуральное число представляется уникальным образом.[1]
Система остаточных классов (СОК)
Представление числа в системе остаточных классов основано на понятии вычета и китайской теореме об остатках. СОК определяется набором попарно взаимно простых модулей ( m 1 , m 2 , … , m n ) {\displaystyle (m_{1},m_{2},\dots ,m_{n})} с произведением M = m 1 ⋅ m 2 ⋅ ⋯ ⋅ m n {\displaystyle M=m_{1}\cdot m_{2}\cdot \dots \cdot m_{n}} так, что каждому целому числу x {\displaystyle x} из отрезка [ 0 , M − 1 ] {\displaystyle [0,M-1]} ставится в соответствие набор вычетов ( x 1 , x 2 , … , x n ) {\displaystyle (x_{1},x_{2},\dots ,x_{n})} , где
- x ≡ x 1 ( mod m 1 ) ; {\displaystyle x\equiv x_{1}{\pmod {m_{1}}};}
- x ≡ x 2 ( mod m 2 ) ; {\displaystyle x\equiv x_{2}{\pmod {m_{2}}};}
- …
- x ≡ x n ( mod m n ) . {\displaystyle x\equiv x_{n}{\pmod {m_{n}}}.}
При этом китайская теорема об остатках гарантирует однозначность представления для чисел из отрезка [ 0 , M − 1 ] {\displaystyle [0,M-1]} .
В СОК арифметические операции (сложение, вычитание, умножение, деление) выполняются покомпонентно, если про результат известно, что он является целочисленным и также лежит в [ 0 , M − 1 ] {\displaystyle [0,M-1]} .
Недостатками СОК является возможность представления только ограниченного количества чисел, а также отсутствие эффективных алгоритмов для сравнения чисел, представленных в СОК. Сравнение обычно осуществляется через перевод аргументов из СОК в смешанную систему счисления по основаниям ( m 1 , m 1 ⋅ m 2 , … , m 1 ⋅ m 2 ⋅ ⋯ ⋅ m n − 1 ) {\displaystyle (m_{1},m_{1}\cdot m_{2},\dots ,m_{1}\cdot m_{2}\cdot \dots \cdot m_{n-1})} .
Система счисления Штерна-Броко
Система счисления Штерна-Броко — способ записи положительных рациональных чисел, основанный на дереве Штерна-Броко.
Системы счисления разных народов
Единичная система счисления
По-видимому, хронологически первая система счисления каждого народа, овладевшего счётом. Натуральное число изображается путём повторения одного и того же знака (чёрточки или точки). Например, чтобы изобразить число 26, нужно провести 26 чёрточек (или сделать 26 засечек на кости, камне и т. д.). Впоследствии, ради удобства восприятия больших чисел, эти знаки группируются по три или по пять. Затем равнообъёмные группы знаков начинают заменяться каким-либо новым знаком — так возникают прообразы будущих цифр.
Древнеегипетская система счисления
Древнеегипетская десятичная непозиционная система счисления возникла во второй половине третьего тысячелетия до н. э. Для обозначения чисел 1, 10, 102, 103, 104, 105, 106, 107 использовались специальные цифры. Числа в египетской системе счисления записывались как комбинации этих цифр, в которых каждая из цифр повторялась не более девяти раз. Значение числа равно простой сумме значений цифр, участвующих в его записи.[2]
Вавилонская система счисления
Алфавитные системы счисления
Алфавитными системами счисления пользовались древние армяне, грузины, греки (ионическая система счисления), арабы (абджадия), евреи (см. гематрия), индийцы (акшара-санкхья) и другие народы Ближнего Востока. В славянских богослужебных книгах греческая алфавитная система была переведена на буквы кириллицы.[2]
Еврейская система счисления
Еврейская система счисления в качестве цифр использует 22 буквы еврейского алфавита. Каждая буква имеет своё числовое значение от 1 до 400 (см. также Гематрия). Ноль отсутствует. Цифры, записанные таким образом, наиболее часто можно встретить в нумерации лет по иудейскому календарю.
Греческая система счисления
Греческая система счисления, также известная как ионийская или новогреческая — непозиционная система счисления. Алфавитная запись чисел, в которой в качестве символов для счёта, употребляют буквы классического греческого алфавита, а также некоторые буквы доклассической эпохи, такие как ϛ (стигма), ϟ (коппа) и ϡ (сампи).
Римская система счисления
Каноническим примером почти непозиционной системы счисления является римская, в которой в качестве цифр используются латинские буквы:
I обозначает 1,
V — 5,
X — 10,
L — 50,
C — 100,
D — 500,
M — 1000
Например, II = 1 + 1 = 2
здесь символ I обозначает 1 независимо от места в числе.
На самом деле, римская система не является полностью непозиционной, так как меньшая цифра, идущая перед большей, вычитается из неё, например:
IV = 4, в то время как:
VI = 6
Система счисления майя
Майя использовали 20-ичную систему счисления за одним исключением: во втором разряде было не 20, а 18 ступеней, то есть за числом (17)(19) сразу следовало число (1)(0)(0). Это было сделано для облегчения расчётов календарного цикла, поскольку (1)(0)(0) = 360 примерно равно числу дней в солнечном году.
Для записи основными знаками были точки (единицы) и отрезки (пятёрки).
Кипу инков
Прообразом баз данных, широко использовавшихся в Центральных Андах (Перу, Боливия) в государственных и общественных целях в I—II тысячелетии н. э., была узелковая письменность Инков — кипу, состоявшая как из числовых записей десятичной системы[3], так и не числовых записей в двоичной системе кодирования[4]. В кипу применялись первичные и дополнительные ключи, позиционные числа, кодирование цветом и образование серий повторяющихся данных[5]. Кипу впервые в истории человечества использовалось для применения такого способа ведения бухгалтерского учёта как двойная запись[6].
См. также
Примечания
Ссылки
Кто изобрел числа? | Вондрополис
Один плюс один равен двум. В одной минуте 60 секунд. Шестьдесят минут равняются одному часу. В одном дне 24 часа. Один год состоит из 365 дней. Все это основные факты, которые мы знаем наизусть, но они подчеркивают важность одного: чисел.
Можете ли вы представить мир без чисел? Можно с уверенностью сказать, что общество в том виде, в каком мы его знаем сегодня, никогда бы не развилось без цифр. Научный и технический прогресс, на котором построено общество, зависит от математики, которая, в свою очередь, зависит от чисел.
Несмотря на свою важность, развитие чисел остается загадкой. Это потому, что первые древние доисторические люди, которые, вероятно, разработали простые методы счета, не оставили никаких записей, чтобы объяснить себя.
Здравый смысл и древние свидетельства указывают на то, что числа и счет начинались с числа один. Хотя они, вероятно, не называли это «одним», доисторические люди, вероятно, считали по единицам и вели след, вырезая линии на кости.
Доказательства того, что это произошло 20 000 лет назад, можно найти на древнем артефакте, известном как Кость Ишанго.Найденная в Африке в 1960 году кость Ишанго (малоберцовая кость павиана) имеет ряд линий, которые выглядят так, как сегодня мы бы назвали «метками подсчета».
Отслеживание небольшого количества предметов со счетными отметками было достаточно для отдельных лиц и небольших групп. Однако по мере того, как общества начали формироваться и расти, торговля становилась все более сложной, требуя разработки чисел для выполнения простых математических расчетов.
Историки считают, что числа и счет расширились за пределы единицы около 4000 Б.C. в Шумерии, которая находилась на юге Месопотамии на территории нынешнего южного Ирака. Одна из первых цивилизаций, в которых города были центрами торговли, народ Шумера нуждался в новых методах подсчета и учета.
Пока в Шумере разрабатывались новые числа и системы счета, развивались и основы арифметики и письма. Для отслеживания продаваемых товаров требовалось писать, а также базовое сложение и вычитание в дополнение к расширенной системе счисления и подсчета.
Все эти фундаментальные идеи развивались одновременно с ростом городов и процветанием торговли. Некоторые историки считают, что некоторые из этих идей независимо развивались и в других частях мира.
Например, арабская система счисления, с которой мы все знакомы сегодня, обычно приписывается двум математикам из древней Индии: Брахмагупте из 6 -го века до нашей эры. и Арьябхат с 5 по век до н.э.
В конце концов числа понадобились не только для простого счета.Мы можем поблагодарить древних египтян за то, что они перешли от использования чисел для счета к их использованию для измерения вещей. Историки считают, что их использование чисел для измерения позволило древним египтянам построить пирамиды и заложить основу для передовых математических концепций, таких как геометрия.
,Кто изобрел числа? — Кто это изобрел
Числа или символы, используемые для счета, существовали с тех пор, как человек научился считать. По оценкам археологов и историков, числа были впервые использованы около 32 000 лет назад. Они основывают эту теорию на археологических находках, таких как кости и камни с отметинами на них. Это могли быть счетные знаки, используемые для отслеживания времени или количества предметов, таких как продукты питания или домашний скот.
Простые системы
Самой первой системой счисления, должно быть, была система подсчета.В системах подсчета нет сложных символов или разрядных значений. Это простейшая система подсчета, хотя и непрактичная для работы с большими количествами. В нашей современной системе счисления в качестве основы или разряда используется 10. Разрядное значение упрощает представление чисел и подсчет.
Другой простой системой счисления была порядковая система счета. Считается, что это началось, когда человек начал считать пальцами, каждый из которых обозначал уникальное число.
Системы счисления с разметкой
Пара древних цивилизаций изобрели системы счисления с размеченными значениями.Самой древней из них была система майя с 60 в основе, примерно 3400 г. до н.э. Египтяне изобрели 10 базовую систему в 3100 году до нашей эры. В современной системе позиционной стоимости также используется 10 в качестве показателя сжатия. Он пришел из Индии через арабов.
Изобретение числа ноль
Число ноль использовалось различными народами, включая майя, египтян, вавилонян и индейцев. Египтяне использовали ноль в своих бухгалтерских записях. Индейцы называли ноль «пустотой». Пытливые греки были озадачены этой фигурой и разработали много интересных философских взглядов на этот предмет.Фактически, оккультисты и мистики использовали число ноль для обозначения небытия или пустотного состояния вещей.
Изобретение отрицательных чисел
Китайцы изобрели отрицательные числа. Об этом говорится в «Новых главах по искусству математики» около 100 г. до н.э. Греческие математики не видели такой возможности примерно до 3 века нашей эры. К 600 году нашей эры индийские ростовщики использовали негативы при расчете долгов.
Изобретение чисел дроби
Изобретение дробей восходит к древним египтянам.Их Kahun Papyrus обсуждает дроби и другие математические проблемы. Он датируется примерно 1800 годом до нашей эры. Среди греков самая известная математическая работа по этой теме — «Элементы» Евклида.
Изобретение иррациональных чисел
Индийцы знали о дробных числах, как записано в их Стананга Сутре. Другой текст, Сульба Сутра, разъясняет иррациональные числа. Он датируется 800-500 годом до нашей эры. Считается, что греческий последователь Пифагора Гиппас в то же время открыл иррациональное.Но Пифагор отказался признать существование нерациональных чисел и казнил Гиппаса.
Изобретение современных чисел
Индийцы также изобрели современную систему счисления. Его часто называют арабскими цифрами, потому что в Европу он попал через арабов. Персы скопировали индийскую систему счисления, а затем передали ее арабам. Затем итальянский математик Фибоначчи поехал учиться в Алжир. Когда он вернулся домой, он принес с собой индийские цифры.Он написал о системе в своей книге «Liber Abaci». Эта система вскоре получила широкое распространение во всей Европе. Сегодня это система счисления, используемая практически во всем мире.
Статьи по теме
Делитесь и наслаждайтесь!
.Кто изобрел числа?
Никто не знает! Да никто не знает, кем были придуманы числа! Историки говорят нам, что самые ранние свидетельства подсчета датируются 35 000 годом до нашей эры. На некоторых костях той эпохи были обнаружены «отметки», которые предполагаются как «отметки». Существуют различные теории, объясняющие, что считалось — дни, люди, животные…?
Жители Месопотамии были первыми, кто использовал систему позиционных значений — это позволило им оперировать большими числами.У него было 60 в качестве базы, и система использовалась примерно в 3400 году до нашей эры. Египтяне также разработали аналогичную систему с основанием 10 около 3100 г. до н.э. (Текущая система — это система с основанием 10).
Греки, увидев и поучившись у египтян, использовали аналогичную систему счисления. В системе счисления, используемой греками, не было ни нуля, ни десятичной дроби. Хотя греки разработали важные теоремы в тригонометрии, они не были столь эффективны в алгебре. Их система счисления делала вещи громоздкими.
Индийские математики, осознав проблему, изобрели и ноль, и новую систему счисления с десятичными знаками. Арабы, обнаружив, что она превосходит неэффективную греческую систему, позаимствовали ее и улучшили. Европейцы узнали новую систему счисления у арабов, поэтому нынешние числа называются арабскими цифрами.
Изобретение нуля и отрицательных чисел подняло множество философских вопросов. Некоторые спорили, как можно иметь -3 овцы! В этом нет смысла.Проблемы решались одна за другой. Например, в вышеупомянутом случае ответ был — можно иметь банковский баланс с отрицательным знаком, и это совершенно логично.
Со временем концепция расширилась. Вскоре были найдены рациональные числа, действительные и мнимые числа. Мнимые числа — относительно недавнее изобретение, и они были изобретены в 16-м веке, когда математики пытались составить некоторые уравнения. У. Р. Гамильтону обычно приписывают изобретение комплексных чисел.
Категория: Изобретения. ,Кто изобрел ноль? | Живая наука
Хотя люди всегда понимали концепцию «ничего» или «ничего не иметь», концепция нуля является относительно новой; он полностью развился в Индии примерно в пятом веке нашей эры, возможно, на пару веков раньше. Раньше математики изо всех сил пытались выполнять простейшие арифметические вычисления. Сегодня ноль — как символ (или цифра), так и понятие, означающее отсутствие какой-либо величины — позволяет нам проводить вычисления, решать сложные уравнения и изобрести компьютеры.
«Индийский [или числовой] ноль, широко рассматриваемый как одно из величайших достижений в истории человечества, является краеугольным камнем современной математики и физики, а также побочной технологии, — сказал Питер Гобетс, секретарь фонда ZerOrigIndia Foundation. или нулевой проект. Фонд, базирующийся в Нидерландах, исследует происхождение нулевой цифры.
Ранняя история: угловые клинья
Ноль в качестве заполнителя был изобретен независимо в цивилизациях по всему миру, сказал д-р.Аннет ван дер Хук, индиолог и координатор исследований Zero Project. Вавилоняне получили свою систему счисления от шумеров, первых людей в мире, которые разработали систему счисления. Шумерская система, разработанная 4000–5000 лет назад, была позиционной — ценность символа зависела от его положения относительно других символов.
Роберт Каплан, автор книги «Ничто, что есть: естественная история нуля», предполагает, что предком нулевого заполнителя могла быть пара угловых клиньев, используемых для представления пустого числового столбца.Однако Чарльз Сейф, автор книги «Ноль: биография опасной идеи», не согласен с тем, что клинья представляют собой заполнитель.
Система шумеров перешла через Аккадскую империю к вавилонянам около 300 г. до н. Э. Там, соглашается Каплан, появился символ, который явно был заполнителем — способом отличить 10 от 100 или обозначить, что в числе 2025 нет числа в столбце сотен. Первоначально вавилоняне оставили пустое место в своей клинописной системе счисления, но когда это стало запутанным, они добавили символ — клинья с двумя углами — для обозначения пустого столбца.Однако они так и не разработали идею нуля как числа.
Ноль в Америке
Шестьсот лет спустя и в 12000 милях от Вавилона майя разработали ноль в качестве заполнителя около 350 г. н.э. и использовали его для обозначения заполнителя в своих сложных календарных системах. Однако, несмотря на то, что они были высококвалифицированными математиками, майя никогда не использовали ноль в уравнениях. Каплан описывает изобретение нуля майя как «самый яркий пример того, что ноль был изобретен полностью с нуля.«
Индия: где ноль превратился в число
Некоторые ученые утверждают, что вавилонская концепция распространилась до Индии, но другие, в том числе участники проекта« Ноль », отдают дань уважения индийцам в самостоятельной разработке числового нуля». точка зрения, что в древней Индии можно найти множество так называемых «культурных предшественников», которые делают правдоподобным, что математический ноль был изобретен именно там », — сказал Гобетс, чья организация состоит из ученых и аспирантов, посвятивших себя изучению развития нуля в Индии. ,«Проект Zero предполагает, что математический ноль (« шунья »на санскрите) мог возникнуть из современной философии пустоты или шуньята», — сказал Гобетс. Если бы философские и культурные факторы, обнаруженные в Индии, были важны для развития нуля как математической концепции, это объяснило бы, почему другие цивилизации не развили ноль как математическую концепцию, сказал ван дер Хук.
Согласно книге «Гребень павлина; неевропейские корни математики» д-раДжордж Гевергезе Джозеф, концепция нуля впервые появилась в Индии примерно в 458 году нашей эры. Джозеф предполагает, что санскритское слово, обозначающее ноль, śūnya, означало «пустота» или «пустой» и образовано от слова «рост» в сочетании с найденным ранее определением. в Ригведе о «недостатке» или «недостатке». Производным от этих двух определений является шуньята, буддийская доктрина «пустоты», или освобождения ума от впечатлений и мыслей.
«Исходя из этой философии, мы думаем, что появилось число для использования в математических уравнениях», — сказал ван дер Хук.«Мы ищем мост между индийской философией и математикой».
«Ноль и его действие впервые были определены [индуистским астрономом и математиком] Брахмагуптой в 628 году», — сказал Гобетс. Он разработал символ нуля: точку под числами. «Но он тоже не утверждает, что изобрел ноль, который, по-видимому, должен был существовать какое-то время», — добавил Гобетс.
Надпись на стене храма в Гвалиоре, Индия, датируется девятым веком и считается старейшим зарегистрированным примером нуля, по данным Оксфордского университета.Другой пример — древний индийский свиток под названием рукопись Бхакшали. Обнаруженный в поле в 1881 году, исследователи считают, что он также возник в девятом веке. Однако недавнее углеродное датирование показало, что оно, вероятно, было написано в третьем или четвертом веке, что отодвигает самое раннее зарегистрированное использование нуля на 500 лет.
Маркус дю Сотуа, профессор математики Оксфордского университета, сказал: «Сегодня мы считаем само собой разумеющимся, что концепция нуля используется во всем мире и является ключевым строительным блоком цифрового мира.Но создание нуля как отдельного числа, которое произошло от символа точки-заполнителя, найденного в рукописи Бахшали, было одним из величайших достижений в истории математики.
«Теперь мы знаем, что еще в третьем веке математики в Индии посеяли семена идеи, которая впоследствии стала столь фундаментальной для современного мира. Результаты показывают, насколько динамичной была математика на индийском субконтиненте. на века.»
От Ближнего Востока до Уолл-стрит
В течение следующих нескольких столетий концепция нуля прижилась в Китае и на Ближнем Востоке.По словам Нильса-Бертиля Валлина из YaleGlobal, к 773 году ноль достиг Багдада, где стал частью арабской системы счисления, основанной на индийской системе.
Персидский математик Мохаммед ибн-Муса аль-Ховаризми предложил использовать маленький кружок в вычислениях, если в разряде десятков нет числа. Арабы называли этот круг «сифр» или «пустой». Ноль имел решающее значение для аль-Ховаризми, который использовал его для изобретения алгебры в девятом веке. Аль-Ховаризми также разработал быстрые методы умножения и деления чисел, известные как алгоритмы — искажение его имени.
Ноль попал в Европу через мавританское завоевание Испании и был развит итальянским математиком Фибоначчи, который использовал его для вычисления уравнений без счётов, которые в то время были наиболее распространенным инструментом для арифметики. Эта разработка была очень популярна среди торговцев, которые использовали уравнения Фибоначчи, содержащие ноль, для балансировки своих бухгалтерских книг.
Средневековые религиозные лидеры в Европе не поддерживали использование нуля, сказал ван дер Хук. Они считали это сатанинским. «Бог был во всем, что было.«Все, что не было от дьявола», — сказала она.
Валлин указывает, что итальянское правительство с подозрением относилось к арабским числам и объявило использование нуля вне закона. Торговцы продолжали использовать его незаконно и тайно, а арабское слово для обозначения нуля: Слово «sifr» привело к появлению слова «шифр», которое не только означает числовой символ, но и стало означать «код».
К 1600-м годам ноль использовался довольно широко по всей Европе. Это было основополагающим для Рене Декарта. Декартова система координат и в исчислении, разработанная независимо сэром Исааком Ньютоном и Готфридом Вильхемом Либницем.Исчисление проложило путь физике, инженерии, компьютерам и большей части финансовой и экономической теории.
«В настоящее время концепция пустоты занимает центральное место в современной физике: вся известная вселенная рассматривается как« игра с нулевой суммой »среди других, таких как Стивен Хокинг», — сказал Гобетс.
Цифра и концепция нуля, привезенные из Индии, проявились по-разному. «Столь банальным стал ноль, что немногие, если вообще есть, осознают его поразительную роль в жизни каждого человека в мире», — сказал Гобетс.
Дополнительные ресурсы
,