Троичная уравновешенная система счисления и применение её в эвм — справочник студента

Сохрани ссылку в одной из сетей:

Троичная система счисления
позиционная система счисления с
основанием 3. Троичная система счисления
существует в двух вариантах: несимметричная
(цифры 0, 1, 2) и симметричная (уравновешенная)
(цифры -1, 0, 1).

Позиционная симметричная (уравновешенная)
троичная система счисления была
предложена математиком Леонардо Пизано
Фибоначчи (1170 – 1228) для решения «задачи
о гирях».

В задаче шла речь о бедном торговце,
который с помощью четырех камней на
рычажных чашечных весах совершенно
правильно взвешивал предметы массой
1, 2, …, 40 кг. Для этого он использовал
камни весом 1, 3, 9 и 27 кг.

Пусть груз, который надо взвесить, весит
А кг. Это число можно представить в
троичной системе:

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

— где
коэффициенты a, a1,
, anмогут принимать
значения 0, 1 или 2.

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента
Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Следовательно, любое целое число можно
записать в троичной уравновешенной
системе счисления с помощью цифр 0, 1 и
,
заменив в многочленной форме представления
числа цифру 2 на соответствующую разность.

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

где b0,b1, , bn
могут принимать значения 0, 1 или .

Например, представим число 100 в
несимметричной и симметричной системе
счисления:

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента
Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

  • — на вторую чашу, если ,
  • — или на первую чашу весов, если ,
  • — или не использовать эту гирю, если .
  • Далее, гиря весом в 3 кг ставится:
  • — на вторую чашу, если ,
  • — или на первую чашу весов, если ,
  • — или не использовать эту гирю, если .

И так далее. Расставив гирю по такому
принципу, можно уравновесить любой
груз. Если величина груза не была
известна, то мы подбирает такое
расположение гирь на весах, которое
уравновешивает этот груз, и тем самым
определяем и массу груза.

Представление
отрицательных чисел

Наличие положительной и отрицательной
цифр позволяет непосредственно
представлять как положительные, так и
отрицательные числа. При этом нет
необходимости вводить дополнительный
код для выполнения арифметических
операций (см.

лекцию о машинном
представлении числовых данных). Знак
числа в троичной уравновешенной системе
счисления определяется знаком старшей
цифры числа: если она положительная, то
и число положительно; если отрицательная,
то и число отрицательно.

Например,

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента
Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Очевидно, что для изменения знака числа
надо изменить знаки всех его цифр (то
есть инвертировать его код). Например:

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Можно сделать вывод, что при вычислениях
на основе троичной уравновешенной
системы отпадает необходимость в
операции «вычитания».

Операция сложения всякой цифры в этой
системе с нулем дает в результате эту
же цифру. Сложение 1 с
дает ноль. И только сумма двух единиц
или двух
формируется путем переноса в следующий
разряд цифры того же знака, что и
слагаемые, и установки в текущем разряде
цифры противоположного знака. Пример:

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

  1. Приведем пример сложения чисел с разными
    знаками:

Перевод целых десятичных
чисел в троичную уравновешенную систему
счисления

Для перевода из десятичной системы в
троичную уравновешенную, можно
воспользоваться следующим алгоритмом:

  1. выполняем деление в десятичной системе исходное число на 3;

  2. если остаток от деления равен 2, записываем его как , а к результату от деления добавляем 1;

  3. если результат меньше 2, начинаем записывать результат перевода, п.5;

  4. делим результат на 3, затем и повторяем действия описанные в п.2;

  5. переписываем полученные значения остатков (снизу-вверх), начиная с последнего результата деления.

Пример.

Переведем по предложенному правилу
число
в троичную симметричную систему
счисления.

Частное Остаток Цифра Измененное частное
2 52+1=53
2 17+1=18
0 0
0 0
2 0+1=1
1 1

Итак,

Троичная уравновешенная система
счисления применялась в ЭВМ «Сетунь»,
разработанной в 1958 году в Московском
государственном университете им. М.В.
Ломоносова под руководством Николая
Петровича Брусенцова.

В основе так называемого троичного
принципа Брусенцова
были положены
три идеи:

  • Троичная логика,
  • Троичная симметричная система счисления,
  • Троичный элемент памяти (троичный триггер).

Троичная цифровая техника базируется
на трехзначных сигналах и трехстабильных
элементах памяти (тритах). Объекты,
принимающие более чем три значения,
реализуются в ней как совокупности
тритов.

Операции над этими объектами
осуществляются как последовательности
операций трехзначной логики. Аналогом
байта служит шестерка тритов — трайт.

Двузначные объекты и операции над ними
содержатся в троичной технике как
вырождения тритов и операций трехзначной
логики.

Источник: https://gigabaza.ru/doc/55220.html

Система счисления троичная: определение, свойства, примеры :

Основой многих расчетов, как простых бытовых, так и сложнейших математических, является десятичная система счисления. Троичная же известна гораздо меньшему кругу людей, ведь применяется она весьма редко.

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Всего три цифры

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

По основанию мы можем понять, как называется система счисления: троичная система имеет основание три, а десятичная — десять (работает и обратное правило — по названию сразу видно основание).

Алфавитом в системах счисления называется набор символов, которые в данном случае используются для записи чисел. Например, в десятичной системе используется десять цифр (считая ноль), а вот в двоичной их всего две, ноль и единица. В троичной же могут применяться 0, 1 и 2. К тому, почему основанием является тройка, а символов в алфавите — четыре, вернемся позже.

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

Максимально возможное значение разрядного слагаемого всегда зависит от системы счисления.

Восьмеричная система счисления во втором разряде имеет разрядное слагаемое 70, в двоичной оно будет равно 10, в троичной — 20, а в десятичной — 90.

К примеру, если разложить десятичное число 158 на разрядные слагаемые, получится такой пример: 100+50+8 (третий разряд). А второразрядное число 98 предстанет в виде 90+8.

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Алфавит

Числа в троичной системе счисления могут обозначаться как всем привычными цифрами 0, 1 и 2. Тогда это несимметричная троичная система. В симметричной же используются знаки «минус» и «плюс», таким образом, в записях используется число «-1». Оно так же может обозначаться как единица с чертой вверху или внизу, как латинская буква i.

Троичные цифры можно закодировать тремя любыми знаками, например «А,Б,В», однако предварительно необходимо указывать их старшинство (к примеру, А меньше Б, Б меньше В).

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Простая формула

Чтобы перевести число из десятичной в троичную систему счисления, нужно воспользоваться общей формулой. Необходимо делить десятичное число на основание необходимой системы и записывать остатки справа налево. Возьмем для примера число 30.

Первым действием делим его на 3. Получаем 10 без остатка, поэтому записываем 0. Десять делится на 3 с остатком 1, поэтому записываем 1. В третьем действии 3 делим на основание системы и записываем сначала остаток, затем результат деления.

В итоге получаем троичное число 1010.

Арифметические действия

Если, например, компьютеры легко проводят математические операции в своей «родной» бинарной системе, то людям бывает трудно перестроить мышление, ведь для нас основной является десятичная система счисления. Троичная система обладает большей емкостью по сравнению с бинарной, и вычисления в ней несколько сложнее, однако во всех позиционных системах применяется таблица сложения.

Пожалуй, все помнят, по какому принципу составляется сетка в игре «Морской бой»: в левом вертикальном столбце записываются цифры, а в верхнем горизонтальном — буквы. Сетку сложения можно составить по тому же принципу.

Например, в несимметричной троичной системе всего три символа, таким образом столбцов будет четыре, в каждый из них следует вписать последовательную цепочку цифр. На примере: нижний горизонтальный столбец будет таков: 0, 00, 01, 02. Второй столбец: 1, 01, 02, 10. Третий: 2, 02, 10, 11.

Можно расширить таблицу, если требуются числа из других разрядов (например, 001 и т. д.).

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Умножение

В троичной системе счисления таблица умножения выглядит короче и лаконичнее, нежели в десятичной, и само действие — не намного сложнее, ведь перемножать придется числа не больше двойки.

Чтобы умножить в столбик, необходимо записать два троичных числа друг над другом, затем последовательно умножать первый множитель на разрядные числа второго, пропуская ноль. Таким образом, умножение цифры 102 на 101 будет выглядеть так: 2*1=2, 0*1=0, 1*1=1. Записываем 102.

Далее пропускаем ноль и умножаем на единицу (старшее число второго множителя).

Однако сложение в троичной системе счисления можно произвести и без всякой таблицы.

Для этого нужно вспомнить простое правило, гласящее: если результат сложения превышает разряд, следует разделить второе число пополам. Разберем пример: допустим, необходимо сложить 6 и 8.

Результатом сложения превышает данную разрядность, поэтому делим 8 на 2, получаем 4. Окончательный пример выглядит так: 6+8=(6+4)+4=10+4=14.

Немного истории

Даже для бытовых расчетов не всегда использовалась десятичная система счисления. Троичная система частично использовалась еще у древних шумеров: их меры денег и весов были кратны трем. С древних времен и до наших дней на рычажных весах используется подобие троичной системы.

Знаменитым Фибоначчи, итальянский ученым и математиком (настоящее имя — Леонардо Пизанский) была предложена целочисленная симметричная троичная система счисления. Таблица умножения в ней, как заметил французский математик О.Л.

Коши, почти в четыре раза короче, по сравнению с десятичной.

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Нечетная система счисления

Троичная система имеет нечетное основание, поэтому реализуется симметричное расположение цифр относительно нуля (-1, 0, 1), с чем связано несколько свойств.

Отрицательные числа представляются в троичной системе более естественно, а также отсутствует проблема округления, ведь младшие цифры, отбрасываемые при округлении, в троичной системе никогда не превосходят по абсолютной величине часть числа, соответствующей младшей значащей цифре младшего разряда. То есть в троичной системе следует только отбросить младшие цифры, и получится наиболее точное приближение.

Отрицательные числа

Довольно интересно представление отрицательных цифр в симметричной троичной системе счисления.

Так как одним из знаков в алфавите является «-1» или единица с чертой сверху, то отпадает надобность в отдельном разряде знака, а выполнение арифметических операций не нуждаются в использовании обратного кода, так как любые действия с симметричным троичным числом выполняются по обычному правилу, но с учетом знака числа. Положительность или отрицательность числа определяется по тому, какой знак имеет старшее число в последовательности. Чтобы сменить знак числа, нужно инвертировать знаки всех присутствующих в коде чисел.

Взаимодействие с другими системами

Некоторые системы счисления стали знаменитыми благодаря использованию их в компьютерных технологиях.

Например двоичная система, или бинарный код — эти слова часто используются в СМИ и кинематографе, так что знакомы они практически всем.

А вот восьмеричная система счисления мало у кого на слуху, хотя используется в сфере IT-технологий из-за того, что легко переводится в двоичную и наоборот, но гораздо более емкая.

Для троичной системы таким емким аналогом является девятеричная.

Читайте также:  Воспитание: сущность, назначение, особенности - справочник студента

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Замена двоичной логики

Основой всех электронно-вычислительных машин нашего времени является двоичная логика, хотя троичная считается более перспективной.

Удивительно, но еще в пятидесятые годы прошлого века в компьютере «Сетунь», построенном в МГУ, уже использовался симметричный троичный код.

С 2008 года же в калифорнийском университете повторили опыт более чем полувековой давности, построив компьютерную систему ТСА2, также основанную на троичной логике.

Ее преимущества перед бинарной в том, что используется меньше разрядов.

Например, число 10 десятичной системы в двоичной системе предстает как 1010, а в троичной несимметричной — как 101, или как +0+ в симметричной.

Емкость также играет роль в том случае, если должна быть выбрана определенная система счисления. Троичная логика экономична и может вместить больший диапазон чисел при том же количестве знаков.

У тех, кто не знаком с бинарным кодом, может возникнуть вопрос: а зачем тогда вообще использовать такие системы счисления, если десятичная — емкая и понятная? Дело в том, что понимание компьютером двоичного кода основано на простой логике: есть сигнал, нет сигнала.

Наличие сигнала означает единицу, а его отсутствие — ноль, только и всего. Машина не воспринимает код как цифры.

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

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Квантовый компьютер и троичный код

Квантовая механика может показаться чем-то фантастическим. Ее законы продолжают удивлять всех, кто впервые с ней сталкивается, однако люди уже давно задумались об использовании ее для создания компьютера нового поколения, более мощного и очень быстрого. Однако это потребует и новых алгоритмов защиты.

Например, чтобы получить доступ к кредитной карте, необходимо разложить на простые множители огромное число, имеющее сотни знаков.

Самый быстрый современный компьютер сможет сделать это за время, равно возрасту нашей Вселенной, однако квантовый компьютер, основанный на троичной логике, вполне справится с этой задачей.

Кубит — квантовый бит — основан на неопределенности спина электрона. Он может вращаться как по часовой стрелке (примем это за единицу), так и против (ноль), однако есть и третий вариант — неопределенность, что вполне может быть третьим «символом» в алфавите, и тогда троичная логика отлично укладывается.

Комплексная работа

Да, использование троичного кода в среднем ускоряет работу компьютера на 50 %, но если «перевод» в троичную систему счисления всех устройств все же произойдет, то как же будут работать старые приложения и программы? Неужели придется менять все и сразу? Нет. Троичная логика как стоящая на разряд выше включает в себя все возможности двоичного кода, и, сверх этого, еще и целый ряд преимуществ. Однако программы должны быть оптимизированы под троичный код, иначе будут работать по-старому.

Источник: https://www.syl.ru/article/305417/sistema-schisleniya-troichnaya-opredelenie-svoystva-primeryi

Компьютеры Советской России с троичной сбалансированной системой счисления

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента «Возможно, самая красивая система счисления — это сбалансированная троичная» — Дональд Е. Кнут, Искусство программирования, Издание 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.

(Перевод Наталии Басс)

Сноски:

  1. Это зависит от того, как конкретная машина представляет числа. Дополнительный код — это представление чисел в десятичной системе счисления, которое даёт возможность представить от -((2^n) / 2) до ((2^n) / 2) — 1 в n битах.

2) Хотя компьютер Сетунь был первым электронным устройством, использовавшим для работы тернарную систему, стоит отметить, что идея использования такой системы в вычислительных устройствах впервые была популяризована более 100 лет назад. В 1840 году Томас Фаулер построил вычислительную машину целиком из дерева, и она работала с данными, используя тернарную систему.

Источник: https://habr.com/post/318468/

Контрольная работа: Троичная система счисления и её применение в вычислительной технике

Троичная уравновешенная система счисления и применение её в ЭВМ - Справочник студента

Тема: Троичная система счисления и её применение в вычислительной технике

Раздел: Бесплатные рефераты по информатике

Тип: Контрольная работа | Размер: 3.54M | Скачано: 47 | Добавлен 17.10.12 в 16:17 | Рейтинг: +1 | Еще Контрольные работы

  • Вуз: ВЗФЭИ
  • Год и город: Москва 2012
  • Вариант 8
  • Оглавление.

1. Троичная система счисления и её применение в вычислительной технике стр.2

2. Практическая часть. стр.8

3. Список используемой литературы. стр.16

  1. Троичная система счисления и её применение в вычислительной технике
  2. Начнём с исторического освещения вопроса возникновения троичной системы счисления.
  3. История троичной логики берёт своё начало в древней Греции, когда за 300 лет до нашей эры Аристотель, занимаясь силлогистикой, упомянул о третьем состоянии логики рассуждения, помимо «да» и «нет».

Троичная система счисления была применена Леонардо Фибоначчи (1170—1250 гг.) при рассмотрении «задачи о поиске наилучшей системы гирь для взвешивания на рычажных весах» или просто «задачи о гирях».

Наибольшую известность она получила как «задача Баше-Менделеева», названной так в честь французского математика 17 в. Баше де Мезириака, который разместил эту задачу в своем «Сборнике приятных и занимательных задач» (1612 г.

) и блестящего русского химика Дмитрия Ивановича Менделеева, который ею интересовался, будучи директором Главной палаты мер и весов России.

  • Сущность задачи состоит в следующем: при какой системе гирь, имея их по одной, можно взвесить всевозможные грузы от 0 до максимального груза, чтобы значение максимального груза было бы наибольшим среди всех возможных вариаций? Известны следующие решения этой задачи:
  • 1) когда гири позволено класть на свободную чашу весов;
  • 2) когда гири позволяется класть на обе чаши весов.

В первом случае «оптимальная система гирь» сводится к двоичной системе гирь: 1, 2, 4, 8, 16, …

, а появляющийся при этом «оптимальный» алгоритм или способ измерения рождает двоичную систему счисления, лежащую в основе современных компьютеров.

Во втором случае наилучшей является троичная система гирь: 1, 3, 9, 27, 81, …, а возникающий при этом способ измерения рождает троичную симметричную систему счисления.

После «задачи о гирях» Фибоначчи, спустя почти 600 лет, в 1840 году, Томас Фоулер, изобретатель и банковский служащий, придумал и изготовил механическую троичную вычислительную машину.

По своему замыслу, построенная из дерева машина, превосходила не только аналоги (механические машины Беббиджа и Мюллера), но и первый электронный цифровой компьютер ENIAC (создан в 1943 году Джоном Экертом и Джоном Мокли), имитировавший десятичный счёт — являясь электронной версией «Паскалины» Блеза Паскаля, конструкции шестерёнок были заменены на вакуумные лампы…

Стоит отметить также тот факт, что машина Фоулера была намного проще машин Беббиджа. К сожалению, после смерти изобретателя в 1843 году были забыты и его идеи, и машина, созданная на их основе.

Далее, в 1947 году, под руководством американского математика Джона фон Неймана была опубликована научная работа «Предварительное обсуждение логического проектирования электронного вычислительного инструмента», в которой упоминается троичная система.

Первое воплощение «в железе» (если учитывать, что «компьютер» Фоулера был из фанеры), троичная система получила благодаря Николаю Петровичу Брусенцову, научному сотруднику МГУ, который в 1956-1958 годах создал троичную ЭВМ «Сетунь» .

ЭВМ функционировала на основе троичного ферритодиодного элемента, полученного в результате модификации двоичного ферритодиодного элемента Гутенмахера. Название вычислительная машина получила по имени протекавшей рядом реки. «Сетунь» работала в двухбитном троичном коде, в котором четвёртое состояние двух битов не использовалось.

К сожалению, серийное производство машины остановилось на 50-ти экземплярах, поскольку аппарат получился недорогой и поэтому неинтересным для выпускающего завода. Несмотря на выдающиеся характеристики, широкий диапазон работы в климатических зонах, нетребовательность к напряжению питания и очень высокую надёжность, выпуск был прекращён.

К слову о надёжности – опытный образец «Сетуни» в МГУ проработал 17 лет, с заменой 3-х дефектных элементов в первый год эксплуатации и был уничтожен в состоянии полной работоспособности.

  1. В 1970 году Брусенцовым была создана новая машина «Сетунь-70», важной особенностью которой являлось то, что она представляла собой не модернизированный вариант предшественницы –  ЭВМ «Сетунь», а оригинальную машину, в которой были воплощены новые структурные и технические решения.
  2. В 1973 году, в США, построен экспериментальный троичный компьютер TERNAC, основными задачами которого являлись проверка реализации недвоичных структур на двоичном компьютере и сравнение технико-экономических характеристик с двоичными аналогами.
  3. В 2008 году построена цифровая 3-х тритовая компьютерная система TCA2.

Что касается нынешнего времени, достоверных фактов использования или разработки современных троичных ЭВМ автором не обнаружено – имеется определённый интерес со стороны компаний, например, IBM, но отсутствует активное участие или освещение этого участия в прессе. Хотя, известный американский учёный, профессор Дональд Кнут считает, что троичная логика элегантнее и эффективнее двоичной и, возможно в будущем, разработки будут продолжены.

Теперь перейдём к определению самой троичной системы счисления:

троичная система счисления является позиционной системой счисления с целочисленным основанием равным 3. Существует в двух вариантах: несимметричная и симметричная.

В несимметричной системе троичные цифры обозначаются любыми тремя знаками — (A,B,C), (X,Y,Z), (!,?,%) и др., обычно применяются цифры (0,1,2): 0 или ВЫКЛЮЧЕНО, 1 или НИЗКИЙ, 2 или ВЫСОКИЙ.

  • В симметричной системе счисления, как правило, используются знаки (−,0,+), (−1,0,+1), (1,0,1), (i,0,1), (N,O,P), (N,Z,P) и цифры (2,0,1).
  • Единица измерения информации источника с тремя равновероятными сообщениями называется трит. Если сравнивать с распространённой в современных компьютерах двоичной системой счисления, то
  • 1 трит ~ 1,585 бит.

По аналогии с понятием байт существует понятие трайт. Впервые термин использовался в ЭВМ троичной логики «Сетунь-70», где он равнялся 6 тритам, что соответствует 9,51 битам и являлся минимальной непосредственно адресуемой единицей главной памяти.

         Таким образом, трайт, будучи лишь немногим больше 8-битного байта, способен принимать почти в три раза больше значений (729 против 256), которые находятся в диапазоне ±364.

Такого числа значений достаточно, чтобы, например, закодировать в одном трайте русский и английский алфавиты, включающие прописные и строчные символы, цифры, математические и служебные знаки.

Это позволяет обрабатывать большее количество информации за один такт центрального процессора – троичный компьютер будет передавать в 2.8 раза больше информации, чем двоичный, при условии одинаковых тактовых частот шины данных.

  1. У троичной архитектуры есть и другие преимущества, кроме более высокой плотности информации:
  2. более высокая производительность центрального процессора;
  3. простота и естественность архитектуры;
  4. логичность программирования, а следовательно, меньшее количество ошибок и меньшее время на отладку ПО (трудоёмкость создания программ уменьшилась в 5-10 раз);
  5. естественная работа с отрицательными числами;
  6. троичная логика целиком включает в себя двоичную, как центральное подмножество, поэтому троичные ЭВМ могут делать почти всё, что делают двоичные.

Для сравнения, перспективная на данный момент RISC-архитектура (машины с сокращённым набором команд) насчитывает 150 команд. «Сетунь» имела 24 команды, которые обеспечивали большую универсальность, эффективность и удобство программирования.

Как считает Николай Петрович Брусенцов, «истинный RISC может быть только троичным».

Сегодня, троичные ЭВМ занимают очень малое место в вычислительной технике. Основная причина этого – массовое производство двоичных компьютеров и их компонентов. Переход на новую архитектуру потребует разработки иной элементной базы, отличной от двоичной, а, вместе с ней, и разработку ПО всех уровней.

На мой взгляд, есть ещё одна немаловажная причина того, что перспективная область остаётся практически нетронутой – маркетинг крупных производителей компьютерного «железа».

Читайте также:  Цели внеучебной деятельности в соответствии с фгос - справочник студента

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

Но корпорации инертны и в какой-то степени, переход на троичную технику для них может означать значительные капиталовложения с неясным сроком окупаемости – даже если сейчас все производители прекратят выпуск двоичной техники, уже имеющаяся будет исправно эксплуатироваться не один год, до тех пор, пока не выйдет из строя.

А это значит, что период перехода на троичную технику будет значительно растянут во времени, при том, что возможность получения прибылей у корпораций будет отсутствовать.

В то же время, на мой взгляд, именно сейчас, когда компьютерная и микроэлектроника находятся в расцвете, объёмы цифровой информации увеличиваются ежедневно, применение троичных систем становится особенно актуальным.

Например, в силу большей ёмкости тритового кода, троичные алгоритмы передачи информации позволят существенно расширить возможности оптоволоконной связи, что в свою очередь, положительно скажется на предоставлении цифровых услуг по всему миру – по существующим коммуникациям сможет передаваться почти втрое большая информация.

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

Практическая часть.

ВАРИАНТ 8

Предприятие ООО «Красный Октябрь» осуществляет деятельность, связанную с выпуском различных видов деталей для промышленного оборудования. Для повышения эффективности функционирования предприятия ежемесячно производится анализ плановых и фактических показателей выпуска продукции. Данные фактических и плановых показателей выпуска продукции приведены на рис. 8.1 и рис. 8.2.

  1. Построить таблицы по приведенным ниже данным.
  2. Выполнить расчет отклонения фактических показателей от плановых в абсолютной и относительной форме, подвести итоги за месяц.
  3. Результаты вычислений представить в виде консолидированной таблицы, содержащей сводные данные о выпущенной продукции.
  4. Сформировать и заполнить форму сводной ведомости по учету выпущенной продукции за квартал (рис. 8.3).
  5. Результаты плановых и фактических показателей выпуска продукции за квартал по каждой бригаде представить в графическом виде.
Ведомость учета выпущенной продукции за январь 2006 г.
Номер бригады По плану Фактически Абсолютное отклонение от плановых показателей Относительное отклонение от плановых показателей
1 225
2 158
3 200
ИТОГО
Ведомость учета выпущенной продукции за февраль 2006 г.
Номер бригады По плану Фактически Абсолютное отклонение от плановых показателей Относительное отклонение от плановых показателей
1 245
2 140
3 200
ИТОГО
Ведомость учета выпущенной продукции за март 2006 г.
Номер бригады По плану Фактически Абсолютное отклонение от плановых показателей Относительное отклонение от плановых показателей
1 280
2 160
3 230
ИТОГО

Список используемой литературы.

  1. Леонардо Пизано Фибоначчиhttp://www.xfibo.ru/fibonachi/leonardo-pisano-fibonacci.htm
  2. Троичная система счисленияhttp://ru.wikipedia.org/wiki/Троичная_система_счисления
  3. Троичный компьютерhttp://ru.wikipedia.org/wiki/Троичный_компьютер
  4. Л.Е. Майстров, О.Л. Петренко, “Приборы и инструменты исторического значения: вычислительные машины”, Москва, 1981.
  5. Н.П. Брусенцов, РамильАльварес Хосе «Троичные ЭВМ “Сетунь” и “Сетунь 70”»
  6. Троичная машина в XIX веке, Леонид Черняк Computerworld Россия, №42, 2002г
  7. Брусенцов Н.П., Румянцев Д. Долой биты! (Интервью с конструктором троичной ЭВМ) // «Академия Тринитаризма», М., Эл № 77-6567, публ.11503, 13.09.2004

Источник: https://studrb.ru/works/entry12365

Троичная арифметика

Рассматриваются троичная симметричная (уравновешенная) система счисления (ТСС) и базовые операции производимые в ней.

Введение

Троичная система — позиционная система счисления по целочисленному основанию 3. Мы будем рассматривать вариант симметричной системы, значения в которой могут быть отрицательными, нулевыми или положительными, другими словами -1, 0, 1. Далее под понятием троичная система, троичное число и т.п., будет пониматься троичная симметричная позиционная система счисления.

Все мы уже привыкли к десятичным числам (1; 3; 5), двоичным (101; 1011001) и даже к шестнадцатеричным (0xFF; 0xA5), а что из себя представляет троичное число? Это такая же последовательность знаков (+0+—+0), только в отличие от ранее приведенных систем вместо цифр символы +,0,-. Примеры троичных чисел и их десятичный эквивалент: -+3=−210 , -03=−310 , —3=−410 , +-3=210 , +03=310 , ++3=410 .

Перевод чисел из троичной симметричной системы в десятичную

В общем виде число в троичной системе можно представить как сумму произведений значения разряда на соответствующую этому разряду степень числа 3 (в десятичном представлении).

Иными словами: an⋅3n+an-1⋅3n-1+…+a2⋅32+a1⋅3+a0+a-1⋅3-1+a-2⋅3-2+…+a-m+1⋅3-m+1+a-m⋅3-m , где ai∈[−1,0,1] , n,m,i∈N . Причем an⋅3n+an-1⋅3n-1+…+a2⋅32+a1⋅3+a0 – целая часть числа, a-1⋅3-1+a-2⋅3-2+…+a-m+1⋅3-m+1+a-m⋅3-m – дробная часть.

Рассмотрим троичное число +-0-0++. +-0-0++=1⋅37-1−1⋅36-1+0⋅35-1−1⋅34-1+0⋅33-1+1⋅32-1+1⋅31-1=36−35+0−33+0+3+1=463

Подробнее:

Троичный разряд + + +
Номер разряда 7 6 5 4 3 2 1
Степень 37-1=36 36-1=35 35-1=34 34-1=33 33-1=32 32-1=31 31-1=30
Десятичное значение 729 243 81 27 9 3 1
Множитель 1 -1 -1 1 1
Итоговое десятичное значение 729 -243 -27 3 1

Перевод из десятичной системы в троичную симметричную (уравновешенную) систему

Для перевода из десятичной системы в троичную, можно воспользоваться следующим алгоритмом:

  1. Исходное число (в десятичной системе) делим на 3.
  2. Если остаток от деления равен 2, то к результату добавляем +1.
  3. Если результат от деления больше 2, — выполняем его деление на 3.
  4. Пункты 2, 3 выполняем до тех пор пока не получим результат от деления меньше 3 (см. п.3).
  5. После выполнения процедур сначала выписываем результат от последнего деления, при этом если результат равен двум то его выписываем как +-, затем выписываем остатки от предыдущих операций, так что первый остаток от деления был выписан последним (то есть выписываем снизу вверх), при этом все остатки равные двум выписываются как значение — (см. п.2, мы делали заём из остатка в результат).
  6. Значения равные 1 выписываются как +, 0 оставляем как есть (0 и в троичной системе 0).

Пример: Переведём число 19 из десятичной системы в троичную систему. Разделим 19 на 3. Получим 6, а в остатке будет 19−6×3=19−18=1 .

Так как результат больше 2 (6>2), необходимо продолжить выполнение операций деления. Теперь 6 делим на 3. Получаем 2, в остатке 6−2×3=6−6=0 . Результат меньше 3. Дальше делить результат не требуется.

Выписываем: 2, 0, 1. Заменяем, получаем: +-0+ — 19 в троичной системы.

Пример: Переведём число 5 из десятичной системы в троичную систему. Разделим 5 на 3. Получим 1, а в остатке будет 5−1×3=5−3=2 . Так как остаток равен 2, то делаем заём в результат добавляя к нему +1, то есть результат теперь равен 2. Результат меньше 3. Дальше делить результат не требуется. Выписываем: 2, 2, но так как 2 из результата выписывается как +-, а из остатка как +, получаем +—.

Примечание: данный способ больше пригоден для преобразования с вычислительным устройством, так как приходится осуществлять множество операций деления.

Отрицательные числа

Ключевая особенность троичной системы — наличие знака числа в самом алфавите, т.е. однозначно определяется знак числа по самому числу. Если ведущий ненулевой разряд отрицателен, то и само число является отрицательным. Изменение знака числа производится инвертированием каждого разряда числа: положительный разряд меняется на отрицательный и наоборот, ноль остается без изменений.

+0-3=810

-0+3=−810

Округление

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

Это следствие того, что абсолютная величина части числа, представленной отбрасываемыми младшими цифрами, никогда не превосходит половины абсолютной величины части числа ( 0,+2=16>0,0+=19 ), соответствующей младшей значащей цифре младшего из сохраняемых разрядов.

Округлим троичное число 0,++++=0,493827 до 3 знаков после запятой: 0,+++=0,48148 , до 2 знаков дает: 0,++=0,4444(4) , до 1 знака — 0,+=0,3333(3) .

Сложение

Сложение производится по общим правилам для позиционных систем.

Слагаемое 1 + + +
Слагаемое 2 + + +
Сумма + + +
Перенос +

Примечание: следует отметить что разрядная сетка с двумя разрядами не переполняется вплоть до 4 слагаемых. Таким образом наименьшим оптимальным сумматором можно считать сумматор для четырёх одноразрядных операндов: «+» + «+» + «+» + «+» = «+-» + «+-» = «++»

Вычитание

Операция вычитание выполняется как сложение с инвертированием вычитаемого или уменьшаемого.

«+0-» — «-+» = «+0-» + «+-» = «+0+».

Умножение

Умножение производится по общим правилам для позиционных систем.

Таблица умножения

+ 0 — +

0

+
+

Умножение 8 (+0-) на 8 (+0-), в результате получаем 64:

+
×
+
+
+
+
+
+ + +

Примечание: умножение в троичной системы на 3n , где n>0,n∈N , сводится к добавлению к числу n – младших разрядов с нулевым значением: 4=++ ; 12=++0 ; 36=++00 , также эта операция называется троичный сдвиг влево.

Деление

Деление производится по общим правилам для позиционных систем.

При делении столбиком, если разрядность остатка от деления не уменьшилось, необходимо произвести его деление без добавления следующего разряда делимого, а результат записать под предыдущем результатом, затем необходимо сложить полученные результаты поразрядно (можно заменять операцию вычитания – операцией сложения, для этого вычитаемое необходимо инвертировать, после чего можно производить сложение).

Пример: разделим 25 на 5.

+ + +
+ +
+ +
+ +
+
+
+

В результате второй операции вычитания получается остаток с разрядностью равной разрядности делителя, т.е. необходимо произвести деление остатка без займа следующего разряда делимого. Полученный результат записываем под предыдущим результатом.

Примечание: деление числа на 3n , где n>0,n∈N , осуществляется сдвигом вправо: 18=+-00 ; 6=+-0 ; 2=+- ; 23=+,- .

Признак делимости на 2

Число a в троичной системы можно представить в виде a=anan-1…a1a0¯=(3n−1)⋅an+(3n-1−1)⋅an-1+…+(32−1)⋅a2+(3−1)⋅a1+an+an-1+…+a1+a0 , где ai∈[−1,0,1] , i=0,1,…,n , an≠0 .

Обозначим b=(3n−1)⋅an+(3n-1−1)⋅an-1+…+(32−1)⋅a2+(3−1)⋅a1 ,

c=an+an-1+…+a1+a0 , т.е. a=b+c .

Рассмотрим число b=(3n−1)⋅an+(3n-1−1)⋅an-1+…+(32−1)⋅a2+(3−1)⋅a1 .

Множителями ai , является (3k−1) .

При любом k≥1 (3k−1)=(3−1)⋅(3k-1+3k-2+…+3+1)=2⋅(3k-1+3k-2+…+3+1) , следовательно, можно записать b=2⋅(…) , т.е. b делится 2.

  • Следовательно, число a=b+c делится на 2 тогда, когда делится на 2 число c=an+an-1+…+a1+a0 , которое представляет собой сумму цифр числа a .
  • Число в троичной системы делится на 2 (число четное), если сумма значений его разрядов делится на 2.
  • Пример:
Числа, которые делятся на 2 Числа, которые не делятся на 2
Значение в троичной системе Сумма разрядов Значение в десятичной системе Значение в троичной системы Сумма разрядов Значение в десятичной системе
+- 2 + 1 1
++ 2 4 +0 1 3
+-0 2 6 +— -1 5
+0- 2 8 +-+ 1 7
+0+ 2 10 +00 1 9
++0 2 12 ++- 1 11
+— 4 14 +++ 3 13

Признак делимости на 3

Число a в троичной системы можно представить в виде a=anan-1…a1a0¯=3n⋅an+3n-1⋅an-1+…+31⋅a1+30⋅a0 , где ai∈[−1,0,1] , i=0,1,…,n , an≠0 .

Зададим число b=a−a0 , т.е. b=3n⋅an+3n-1⋅an-1+…+31⋅a1=3⋅(3n-1⋅an+3n-2⋅an-1+…+31⋅a2+a1) .

Отсюда следует, что число b делится на 3, а число a=b+a0 делится на 3 тогда и только тогда, когда a0 делится на 3, этому соответствует значение a0=0 , таким образом, числа в троичной системы делятся на 3, если младший разряд равен нулю.

Пример:

Числа, которые делятся на 3 Числа, которые не делятся на 3
Значение в троичной системе Значение в десятичной системе Значение в троичной системе Значение в десятичной системе
+0 3 + 1
+-0 6 +- 2
+00 9 ++ 4
++0 12 +0- 8

Источник: http://trinary.ru/kb/3d3703c1-75fb-4bf8-9041-a27d34a30508

Ссылка на основную публикацию
Adblock
detector