|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
Определение чётности числа в уравновешенной троичной системе
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Вопрос а насколько надо знать чётное число или нет "мгновенно"?...
|
11 Jan 2019 19:28 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Так это и есть вопрос, который я ранее задал: а нужен ли вобще флаг четности? Я его учитывал просто как четность числа - удобно для алгоритмов типa: " на 1-й, 2-й рассчитайсь". Классически четность, как четное или нечетное число единиц в слове, была введена для контроля приёма-передачи информации. Но потом аппаратно это стали делать сами БИС различных контроллеров и необходимость в этом флаге перестала быть актуальной. В принципе - один циклический сдвиг, типа RAL, и четность уже проверяется как флаг C в двоичности. Поэтому я и задал тут вопрос, а нужен ли вобще флаг четности в троичном CPU?
_________________ iLavr
|
12 Jan 2019 01:27 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Похоже, что в двоичке его сейчас уже никак не используют, насколько мне известно.
Если где-то нужен контроль четности, то его выполняют по месту, аппаратно и при необходимости - с коррекцией ошибки.
_________________ iLavr
|
12 Jan 2019 04:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А она и в двоичке по жизни только при вычислении CRC использовалась... Была такая статья "Вычисляем CRC..." в журнале "Радиолюбитель", там прямо и было написано, что, пожалуй, это единственное место, где флаг четности применяется с пользой... К примеру, у популярного процессора 6502 никакого флага четности не было отродясь: Но это всё двоичка, как говорится, "проехали"... Другое дело, если мы сочиняем троичный процессор, возможно, флаг четности ему и нужен. Никто же не приложил пока специальных БИС или аппаратных средств троичной логики, где всё это вычисляется без процессора и аппаратно.
_________________ iLavr
|
12 Jan 2019 04:55 |
|
|
JeNNeR
Fanat
Joined: 18 Nov 2014 09:17 Posts: 52 Location: Отсюда
|
Тут же как раз фокус в вычислении: Сумма чисел четного числа (в троичной системе) является четным числом, меньшим, чем число. В случае числа 2, сумма равна числу. То есть, каждое вычисление суммы просто сьедает лишние разряды. Из большого числа типа PNNPPOONNPPNNOOPPNNOP(2'107'373'806) остается PNNP(16). Из которого уже получаем PP(4), из которого получаем PN(2). Если в конце получили 2, значит четное. Если хоть раз не получили - нечетное.
З.Ы. Кстати, сумма количества ненулевых разрядов штука нужная. Наверняка понадобится для определения знака числа: пока она больше 1/-1, сдвигаем вправо (делим на 3 с отбрасыванием). стала равна -1/0/1 = получаем знак числа.
|
12 Jan 2019 05:17 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Знак числа аппаратно определяется довольно просто без подсчета ненулевых разрядов. Хотя, конечно, сложнее, чем в двоичности... Может быть, опять же при передаче данных сумма количества ненулевых разрядов может понадобиться
_________________ iLavr
|
12 Jan 2019 07:07 |
|
|
petrenko
Doomed
Joined: 10 Mar 2012 16:21 Posts: 598 Location: РФ
|
Собственно вопрос плавно переходит в плоскость « Троичный "CRC" в кремнии . Как реализовать. И нужно ли ? »
|
12 Jan 2019 21:48 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Давайте не будем путать чётность числа (делимость нацело на 2) и чётность количества единиц в его двоичном представлении (parity) - последнее возможно и нужно, но своё, троичное...
|
12 Jan 2019 23:39 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А мы и не путаем, просто обсуждение так пошло сумбурно.
Топик же звучит как: "Определение чётности числа в уравновешенной троичной системе" В процессоре возможен "флаг четности", вот я и решил посоветоваться с коллегами, нужен ли в троичном процессоре "флаг четности", и что он должен отражать, если нужен.
А путать - тут никто ничего не путает.
_________________ iLavr
|
13 Jan 2019 04:13 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Ну началось всё как раз с чётности как признака делимости на 2 без остатка Кстати если для определения чётности в троичной системе речь идёт о подсчёте ненулевых разрядов, то оно как бы само собой сливается с понятием "parity" Тогда оно наверное таки надо - загоню задачку в DDT, посмотрим что оно нагородит
|
13 Jan 2019 11:50 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Задаём вот такой входной DDT файл - par3.ddt: N - нечётное O - ноль P - чётное Далее пускаем ddtc par3.ddt и получаем на выходе ddt_par3.c: | | | | Code: /* 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; }
| | | | |
Если считать, что OOO это всё-таки чётное число (P вместо O), то решение сокращается до 5 мультиплексоров: | | | | Code: /* 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; }
| | | | |
|
13 Jan 2019 12:53 |
|
|
TernarySystem
Doomed
Joined: 27 Jul 2018 12:07 Posts: 608
|
...для определения чётности числа: я бы по-разрядно сложил бы все числа троичного числа и суму сначала поделил бы на 3 если число поделилось на три без остатка затем поделил бы на 2 - если есть остаток то число нечётное, если же сума от деления на три имеет остаток то число есть нечётное и проверять делением на два ненужно.
|
13 Jan 2019 13:04 |
|
|
TernarySystem
Doomed
Joined: 27 Jul 2018 12:07 Posts: 608
|
сложение это фундаментальная операция компьютеров - если сложно значит такая элементная база. Нужно что-то другое применять...
|
13 Jan 2019 13:52 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
Логисторы?
|
13 Jan 2019 14:09 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22572 Location: Silicon Valley
|
вот так с нулём получается: это я в логисиме вручную перерисовал чего DDT нагенерил - надо уже доделать ddtv, которая будет визуализировать троичные схемы на мультиплексорах P.S. без нуля (ноль - чётное) выкидывается мультиплексор r3, мультиплексоры r4,r5 и r6 переименовываются в r3,r4 и r5, а средний вход нового r4 (старого r3) цепляется к выходу r1
|
13 Jan 2019 14:22 |
|
|
Who is online |
Users browsing this forum: No registered users and 41 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|