vak: (Default)
[personal profile] vak
50 лет назад в МГУ Николай Петрович Брусенцов создал необычную вычислительную машину Сетунь на троичной логике. В ней обрабатывались не биты и байты, к которым мы с вами привыкли, а триты и трайты.

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









Date: 2020-04-23 07:09 (UTC)
dluciv: (Default)
From: [personal profile] dluciv
Жаль память дешёвую делать не научились. А вот АЛУ на трёхфазном переменном токе (ЕМНИП) — это круть была конечно.

Спасибо за видео, надо посмотреть непременно.

Date: 2020-04-23 10:08 (UTC)
norian: (Default)
From: [personal profile] norian
труъ вывих моска

имко четвертичная более лучше потому что легко стыкуецца с бинарной

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

Date: 2020-04-23 20:23 (UTC)
reedcat1965: (Default)
From: [personal profile] reedcat1965
В версиях CAN-Bus только идентификатор пакета 11 или 29 битный, а данные и там и там от 0 до 8 байт. В общем, закономерное развитие, т.к. дивайсов в конкретном объекте прибавилось и старой длины стало не хватать

Date: 2020-04-23 15:33 (UTC)
mdmx: (Default)
From: [personal profile] mdmx
Хм, а есть у такой схемы какие либо преимущества над бинарной, ну помимо того что по другому?

Date: 2020-04-23 16:21 (UTC)
madf: (Default)
From: [personal profile] madf
Для позиционных систем исчисления наибольшая эффективность передачи информации достигается при основании e. 3 ближе к e чем 2.

Date: 2020-04-23 19:37 (UTC)
mdmx: (Default)
From: [personal profile] mdmx
Ничего не понял, но очень интересно (с)

Date: 2020-04-24 08:36 (UTC)
madf: (Default)
From: [personal profile] madf
Для представления числа N в позиционной системе исчисления по основанию b нужно log b (N) позиций. В натуральных логарифмах это будет log(N)/log(b) позиций. Объем информации будет b * log(N) / log(b). Для поиска экстремума этой функции приравняем ее производную к нулю. Производная: log(N)(log(b) - 1))/log^2(b)
Производная обращается в ноль при log(b) - 1 = 0, log(b) = 1, b = e. При этом производная меняет знак с минуса на плюс при переходе через b = e, значт b = e — локальный минимум исходной функции.

Это означает что система исчисления по основанию e наиболее компактно представляет числа.

Date: 2020-04-27 11:34 (UTC)
mdmx: (Default)
From: [personal profile] mdmx
ну стало чуть лучше, но не совсем, к е 3 ближе чем 2 но справа. Как насчет смены знака ?

Date: 2020-04-27 12:24 (UTC)
madf: (Default)
From: [personal profile] madf
Нету никакой смены знака. Вот пример, число 42. Объем информации в 2-ичной системе будет 2 * log2(42) = 10.78, в троичной будет 3 * log3(42) = 10.21, а по основаниею e будет e * log(42) = 10.16

10.21 ближе к 10.16 чем 10.78

На малых числах выигрыша, конечно нет — 6 2-разрядных ячеек дают те-же 12 разрядов что и 4 3-рязрядных, но с ростом чисел 3 разряда начнут выигрывать.

Date: 2020-04-27 12:28 (UTC)
madf: (Default)
From: [personal profile] madf
https://imagebin.ca/v/5KZ9GR63lRjj

— графики 3*log3(x) и e*log(x) идут вплотную, тогда как 2*log2(x) идет существенно выше от самого начала.

Date: 2020-04-24 08:26 (UTC)
x86128: (Default)
From: [personal profile] x86128
Из самого простого и заметного: обращение числа (смена знака, отрицание) получается обычной инверсией тритов, без каких либо дополнительных кодов. Так же последовательность арифметических операций не накапливает ошибку округления.

Date: 2020-04-27 11:35 (UTC)
mdmx: (Default)
From: [personal profile] mdmx
вот тут как то понятнее, спасибо.
А ошибку не накапливает за счет чего ?

Date: 2020-04-28 04:46 (UTC)
x86128: (Default)
From: [personal profile] x86128
Поскольку у нас двоичная система, то нельзя просто отбросить последний бит мантиссы при округлении и считать что вновь полученное число это грубое приближение к исходному. Если считать бит всегда нулевым то через какое-то большое число сложений сумма обнулится, а если считать его всегда равным единице, то переполнится. Существует несколько подходов и они описаны в стандарте IEEE 754.
В троичной сбалансированной системе отбрасывание последнего бита(трита) является "правильным округлением" до ближайшего.

Date: 2020-04-28 16:53 (UTC)
madf: (Default)
From: [personal profile] madf
Все не настолько просто. В двоичной ситеме мантисса представлена как полином d0*2^0 + d1*2^-1 + ... + dn*2^-n. Очевидно что не все вещественные числа можно представить в виде суммы отрицательных степеней двойки, по этом для произвольного вещественного числа мы получаем ближайшее представимое. Ошибка при этом может быть как отрицательной, так и положительной. Соответственно, при выполнении арифметических операций эта ошибка накапливается, но нельзя однозначно сказать что она будет уходить вверх или вниз.

Аналогично и с троичной системой — произвольные вещественные числа там не представимы, а всегда получается ближайшее представимое с определенной ошибкой, как положительной так и отрицательной. Но, цитирую (http://homepage.divms.uiowa.edu/~jones/ternary/numbers.shtml#floating):

Ternary floating point numbers have some useful properties. [Godman and Feldstein, 1974] showed that odd number bases with symmetrical rounding minimize the expected round-off error. [Bustoz, Godman et al, 1979] showed that base 3 is preferred over larger bases.

В системах исчисления с нечетной базой накопление ошибки минимизировано, а база 3 более предпочтительна чем большие базы.

Оффтоп: также некорректно называть округление до ближайшего „правильным“ — есть около 15 различных способов округления, и для всех есть сфера применения. Например в финансах используют округление к ближайшему четному.