Определение чётности числа в уравновешенной троичной системе
Moderator: haqreu
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Определение чётности числа в уравновешенной троичной сис
Вопрос а насколько надо знать чётное число или нет "мгновенно"?...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Определение чётности числа в уравновешенной троичной сис
Так это и есть вопрос, который я ранее задал: а нужен ли вобще флаг четности?Shaos wrote:Вопрос а насколько надо знать чётное число или нет "мгновенно"?...
Я его учитывал просто как четность числа - удобно для алгоритмов типa: "на 1-й, 2-й рассчитайсь".
Классически четность, как четное или нечетное число единиц в слове, была введена для контроля
приёма-передачи информации.
Но потом аппаратно это стали делать сами БИС различных контроллеров и необходимость в этом флаге
перестала быть актуальной.
В принципе - один циклический сдвиг, типа RAL, и четность уже проверяется как флаг C в двоичности.
Поэтому я и задал тут вопрос, а нужен ли вобще флаг четности в троичном CPU?
iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Определение чётности числа в уравновешенной троичной сис
Похоже, что в двоичке его сейчас уже никак не используют, насколько мне известно.
Если где-то нужен контроль четности, то его выполняют по месту, аппаратно и при необходимости -
с коррекцией ошибки.
Если где-то нужен контроль четности, то его выполняют по месту, аппаратно и при необходимости -
с коррекцией ошибки.
iLavr
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Определение чётности числа в уравновешенной троичной сис
А она и в двоичке по жизни только при вычислении CRC использовалась...AlexanderZh wrote: Если в троичке и нужна "четность", то скорее в виде потритовой суммы трайта (этакое однотритовое подобие CRC)
Была такая статья "Вычисляем CRC..." в журнале "Радиолюбитель", там прямо
и было написано, что, пожалуй, это единственное место, где флаг четности
применяется с пользой...

К примеру, у популярного процессора 6502 никакого флага четности не было отродясь: Но это всё двоичка, как говорится, "проехали"...
Другое дело, если мы сочиняем троичный процессор, возможно, флаг четности ему и нужен.
Никто же не приложил пока специальных БИС или аппаратных средств троичной логики, где
всё это вычисляется без процессора и аппаратно.
You do not have the required permissions to view the files attached to this post.
iLavr
-
- Fanat
- Posts: 52
- Joined: 18 Nov 2014 09:17
- Location: Отсюда
Re: Определение чётности числа в уравновешенной троичной сис
Тут же как раз фокус в вычислении:
Сумма чисел четного числа (в троичной системе) является четным числом, меньшим, чем число.
В случае числа 2, сумма равна числу. То есть, каждое вычисление суммы просто сьедает лишние разряды.
Из большого числа типа PNNPPOONNPPNNOOPPNNOP(2'107'373'806) остается PNNP(16).
Из которого уже получаем PP(4), из которого получаем PN(2).
Если в конце получили 2, значит четное. Если хоть раз не получили - нечетное.
З.Ы. Кстати, сумма количества ненулевых разрядов штука нужная.
Наверняка понадобится для определения знака числа:
пока она больше 1/-1, сдвигаем вправо (делим на 3 с отбрасыванием). стала равна -1/0/1 = получаем знак числа.
Сумма чисел четного числа (в троичной системе) является четным числом, меньшим, чем число.
В случае числа 2, сумма равна числу. То есть, каждое вычисление суммы просто сьедает лишние разряды.
Из большого числа типа PNNPPOONNPPNNOOPPNNOP(2'107'373'806) остается PNNP(16).
Из которого уже получаем PP(4), из которого получаем PN(2).
Если в конце получили 2, значит четное. Если хоть раз не получили - нечетное.
З.Ы. Кстати, сумма количества ненулевых разрядов штука нужная.
Наверняка понадобится для определения знака числа:
пока она больше 1/-1, сдвигаем вправо (делим на 3 с отбрасыванием). стала равна -1/0/1 = получаем знак числа.
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Определение чётности числа в уравновешенной троичной сис
Знак числа аппаратно определяется довольно просто без подсчета ненулевых разрядов.JeNNeR wrote: Кстати, сумма количества ненулевых разрядов штука нужная.
Наверняка понадобится для определения знака числа:
Хотя, конечно, сложнее, чем в двоичности...

Может быть, опять же при передаче данных сумма количества ненулевых разрядов может понадобиться
iLavr
-
- Doomed
- Posts: 598
- Joined: 10 Mar 2012 16:21
- Location: РФ
« Троичный "CRC" в кремнии . Как реализовать. И нужно ли ? »
Собственно вопрос плавно переходит в плоскость « Троичный "CRC" в кремнии . Как реализовать. И нужно ли ? »
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Определение чётности числа в уравновешенной троичной сис
Давайте не будем путать чётность числа (делимость нацело на 2) и чётность количества единиц в его двоичном представлении (parity) - последнее возможно и нужно, но своё, троичное...
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Supreme God
- Posts: 16689
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: Определение чётности числа в уравновешенной троичной сис
А мы и не путаем, просто обсуждение так пошло сумбурно.
Топик же звучит как: "Определение чётности числа в уравновешенной троичной системе"
В процессоре возможен "флаг четности", вот я и решил посоветоваться с коллегами,
нужен ли в троичном процессоре "флаг четности", и что он должен отражать, если нужен.
А путать - тут никто ничего не путает.
Топик же звучит как: "Определение чётности числа в уравновешенной троичной системе"
В процессоре возможен "флаг четности", вот я и решил посоветоваться с коллегами,
нужен ли в троичном процессоре "флаг четности", и что он должен отражать, если нужен.
А путать - тут никто ничего не путает.
iLavr
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Определение чётности числа в уравновешенной троичной сис
Ну началось всё как раз с чётности как признака делимости на 2 без остатка 
Кстати если для определения чётности в троичной системе речь идёт о подсчёте ненулевых разрядов, то оно как бы само собой сливается с понятием "parity"
Тогда оно наверное таки надо - загоню задачку в DDT, посмотрим что оно нагородит

Кстати если для определения чётности в троичной системе речь идёт о подсчёте ненулевых разрядов, то оно как бы само собой сливается с понятием "parity"
Тогда оно наверное таки надо - загоню задачку в DDT, посмотрим что оно нагородит

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Определение чётности числа в уравновешенной троичной сис
Задаём вот такой входной DDT файл - par3.ddt:Shaos wrote:Ну началось всё как раз с чётности как признака делимости на 2 без остатка
Кстати если для определения чётности в троичной системе речь идёт о подсчёте ненулевых разрядов, то оно как бы само собой сливается с понятием "parity"
Тогда оно наверное таки надо - загоню задачку в DDT, посмотрим что оно нагородит
Code: Select all
NNN=N
NNO=P
NNP=N
NON=P
NOO=N
NOP=P
NPN=N
NPO=P
NPP=N
ONN=P
ONO=N
ONP=P
OON=N
OOO=O
OOP=N
OPN=P
OPO=N
OPP=P
PNN=N
PNO=P
PNP=N
PON=P
POO=N
POP=P
PPN=N
PPO=P
PPP=N
O - ноль
P - чётное
Далее пускаем ddtc par3.ddt и получаем на выходе ddt_par3.c:
Code: Select all
/* Generated by DDTc v0.5
Solution is 6 x DG403
See www.ternary.info */
#include "ddt.h"
int ddt_par3(int f, DDT i1, DDT i2, DDT i3, DDT* o1)
{
DDT r1,r2,r3,r4,r5,r6;
int f1,f2,f3,f4,f5,f6;
f1 = ddt_mux(f,i1,N,P,N,&r1);
if(f1 < 0) return f1;
f2 = ddt_mux(f,i1,P,N,P,&r2);
if(f2 < 0) return f2;
f3 = ddt_mux(f,i1,N,O,N,&r3);
if(f3 < 0) return f3;
f4 = ddt_mux(f,i2,r1,r2,r1,&r4);
if(f4 < 0) return f4;
f5 = ddt_mux(f,i2,r2,r3,r2,&r5);
if(f5 < 0) return f5;
f6 = ddt_mux(f,i3,r4,r5,r4,&r6);
if(f6 < 0) return f6;
if(o1) *o1 = r6;
return f1+f2+f3+f4+f5+f6;
}
Code: Select all
/* Generated by DDTc v0.5
Solution is 6 x DG403
See www.ternary.info */
#include "ddt.h"
int ddt_par3(int f, DDT i1, DDT i2, DDT i3, DDT* o1)
{
DDT r1,r2,r3,r4,r5;
int f1,f2,f3,f4,f5;
f1 = ddt_mux(f,i1,N,P,N,&r1);
if(f1 < 0) return f1;
f2 = ddt_mux(f,i1,P,N,P,&r2);
if(f2 < 0) return f2;
f3 = ddt_mux(f,i2,r1,r2,r1,&r3);
if(f3 < 0) return f3;
f4 = ddt_mux(f,i2,r2,r1,r2,&r4);
if(f4 < 0) return f4;
f5 = ddt_mux(f,i3,r3,r4,r3,&r5);
if(f5 < 0) return f5;
if(o1) *o1 = r5;
return f1+f2+f3+f4+f5;
}
Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Doomed
- Posts: 633
- Joined: 27 Jul 2018 12:07
Re: Определение чётности числа в уравновешенной троичной сис
...для определения чётности числа: я бы по-разрядно сложил бы все числа троичного числа и суму сначала поделил бы на 3 если число поделилось на три без остатка затем поделил бы на 2 - если есть остаток то число нечётное, если же сума от деления на три имеет остаток то число есть нечётное и проверять делением на два ненужно.
-
- Doomed
- Posts: 633
- Joined: 27 Jul 2018 12:07
Re: Определение чётности числа в уравновешенной троичной сис
сложение это фундаментальная операция компьютеров - если сложно значит такая элементная база. Нужно что-то другое применять...AlexanderZh wrote:Сложение на аппаратном уровне выглядит сложнее. Как минимум три мультиплексора на разряд.TernarySystem wrote: я бы по-разрядно сложил
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Определение чётности числа в уравновешенной троичной сис
Логисторы?TernarySystem wrote:сложение это фундаментальная операция компьютеров - если сложно значит такая элементная база. Нужно что-то другое применять...AlexanderZh wrote:Сложение на аппаратном уровне выглядит сложнее. Как минимум три мультиплексора на разряд.TernarySystem wrote: я бы по-разрядно сложил

Я тут за главного - если что шлите мыло на me собака shaos точка net
-
- Admin
- Posts: 24083
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Определение чётности числа в уравновешенной троичной сис
вот так с нулём получается:AlexanderZh wrote:Я вот больше по графике понимаю. А эти колонки цифр и буков в головушке моей не укладываются.
З.Ы. У меня тоже 5 получается для трёх разрядов.
это я в логисиме вручную перерисовал чего DDT нагенерил - надо уже доделать ddtv, которая будет визуализировать троичные схемы на мультиплексорах
P.S. без нуля (ноль - чётное) выкидывается мультиплексор r3, мультиплексоры r4,r5 и r6 переименовываются в r3,r4 и r5, а средний вход нового r4 (старого r3) цепляется к выходу r1
You do not have the required permissions to view the files attached to this post.
Я тут за главного - если что шлите мыло на me собака shaos точка net