Надысь нарвался в интернете на статью "Домашка по арифметике" - https://habr.com/ru/post/485786/
и хочу предложить её вниманию интересующихся троичной темой. Комментариев статья не требует, там всё довольно понятно написано. Единственное, что мне хотелось-бы заметить, так это то, что замены множителей навроде 31 на (32-1), с целью уменьшить количество единиц в записи, больше походят не столько на троичную, а на двоичную Фибоначчиеву систему записи чисел. Но это моё личное мнение, а статью рекомендую прочесть.
"Скрещивание" двоичного и троичного подхода.
Moderator: haqreu
-
- Novelist
- Posts: 39
- Joined: 21 Jan 2019 03:36
-
- Doomed
- Posts: 633
- Joined: 27 Jul 2018 12:07
Re: "Скрещивание" двоичного и троичного подхода.
Здравствуйте, прочитал, хочу что сказать в счет "скрещивания" - Вы уже подымали этот вопрос в N-проводной троичке.
Так вот на что хочу обратить внимание - в определении системы участвует два понятия: 1- это базис системы и 2- используемый алфавит. В статье показано, что автор использует двоичный базис и троичный алфавит (-1, 0, 1) вместо двоичного алфавита (0, 1) и получает определенный вычислительный эффект... но область определяемых чисел сокращается в 2 раза. И тут возникает вопрос к описываемой идеи, как автор может реализовать троичный алфавит физически в железе (физические уровни сигнала). У меня лично впечетление приделывания реактивного двигателя к телеге (истребитель? Или транспорт для очистки от льда взлетной полосы?)
Так вот на что хочу обратить внимание - в определении системы участвует два понятия: 1- это базис системы и 2- используемый алфавит. В статье показано, что автор использует двоичный базис и троичный алфавит (-1, 0, 1) вместо двоичного алфавита (0, 1) и получает определенный вычислительный эффект... но область определяемых чисел сокращается в 2 раза. И тут возникает вопрос к описываемой идеи, как автор может реализовать троичный алфавит физически в железе (физические уровни сигнала). У меня лично впечетление приделывания реактивного двигателя к телеге (истребитель? Или транспорт для очистки от льда взлетной полосы?)
-
- Novelist
- Posts: 39
- Joined: 21 Jan 2019 03:36
Re: "Скрещивание" двоичного и троичного подхода.
Ну, трудно сказать, что эти два вида "скрещивания" суть одно и то же. Если в "N-проводной троичке" использование N передающих информацию элементов, с двумя или тремя состояниями каждый, шло как основа для передачи троичного сигнала, то в статье Евгения Игоревича применялась именно двоичная, и только двоичная арифметика, а троичный подход применялся к не к системе счисления, а к арифметическим действиям.
То есть (для выполнения умножения двоичных чисел) вместо двоичного набора операций "сдвиг"+"сложение" используется троичный (расширеный) набор: "сдвиг"+"сложение"+"вычитание", и это позволяет уменьшить суммарное количество таких операций довольно сильно. Если посмотреть комментарии к той публикации, то можно найти следующий https://habr.com/ru/post/485786/#comment_21199546, вкратце: "число операций для умножения n-разрядных чисел не превышает n/2+1", а если ограничиться только двумя операциями, то количество сложений (сдвиги в HDL-языках практически бесплатны) может оказаться и равным количеству битов n в записи множителя. Очевидно, что выгода от замены "не более n" операций на "не более n/2+1" растёт пропорционально n - числу разрядов множителя.
У меня впечатления "приделывания реактивного двигателя к телеге" не возникло, наоборот, повосхищался красивым техническим решением и грамотным инженерным подходом. Даже крепкое желание пообщаться с автором за чашкой чая возникло, и заманить его в нашу банду троичников, думаю, было-бы не лишним.
То есть (для выполнения умножения двоичных чисел) вместо двоичного набора операций "сдвиг"+"сложение" используется троичный (расширеный) набор: "сдвиг"+"сложение"+"вычитание", и это позволяет уменьшить суммарное количество таких операций довольно сильно. Если посмотреть комментарии к той публикации, то можно найти следующий https://habr.com/ru/post/485786/#comment_21199546, вкратце: "число операций для умножения n-разрядных чисел не превышает n/2+1", а если ограничиться только двумя операциями, то количество сложений (сдвиги в HDL-языках практически бесплатны) может оказаться и равным количеству битов n в записи множителя. Очевидно, что выгода от замены "не более n" операций на "не более n/2+1" растёт пропорционально n - числу разрядов множителя.
У меня впечатления "приделывания реактивного двигателя к телеге" не возникло, наоборот, повосхищался красивым техническим решением и грамотным инженерным подходом. Даже крепкое желание пообщаться с автором за чашкой чая возникло, и заманить его в нашу банду троичников, думаю, было-бы не лишним.
-
- Doomed
- Posts: 633
- Joined: 27 Jul 2018 12:07
Re: "Скрещивание" двоичного и троичного подхода.
Я вот на что хотел обратить внимание - что при использовании троичного базиса: 3^0, 3^1, 3^2 ... 3^n и алфавита (-1, 0, 1) десятичная двойка будет представлена как 1(-1) = 1*3^1 + (-1)*3^0 = 3 - 1 = 2. А вот при двоичном базисе с троичным алфавитом (-1, 0, 1) как будет представлена двойка десятичной системы. Если за правилами троичной сбалансированной системы то так же 1(-1) = 1*2^1 + (-1)*2^0 = 2 - 1 = 1. Тогда как представить единицу десятичной системы? "Скрещивание" не получается как-то?
-
- Novelist
- Posts: 39
- Joined: 21 Jan 2019 03:36
Re: "Скрещивание" двоичного и троичного подхода.
Я не очень понимаю, чем двойка или единица десятичной системы отличаются от двойки или единицы двоичной или троичной систем. Буду полагать, что вы имели в виду не числовые величины, а запись соответствующих чисел в той или иной системе счисления. Если ошибся в догадках - прошу прощения.
Тогда десятичная запись двойки будет "2", двоичная запись двойки будет "10", а троичная (симметричная) запись двойки будет "+-".
Первая запись расшифровывается как (10^0)*2=1*2=2,
вторая - как (2^1)*1+(2^0)*0=2*1+1*0=2+0=2,
третья - как (3^1)*(+1)+(3^0)*(-1)=3*(+1)+1*(-1)=3-1=2.
Как будут записываться и как расшифровываться числовые величины в упомянутом вами "двоичном базисе с троичным алфавитом" - сказать не могу, мне такой тип записи_чисел неведом. Благодаря исходной статье я познакомился с записью_выражений, которая действительно строится на "двоичном базисе с троичным алфавитом", но это запись выражений, а не чисел.
Если же приглядеться к исходной статье, на которую я пытался обратить внимание читателей форума, то там используются _только_ десятичный и двоичный базисы. Строки записей, содержащих цифры троичного диапазона "+", "0", "-" это не запись чисел, а запись выражений, соответствующих числам - таких выражений, которые позволяют выполнить операцию умножения меньшим числом базовых операций, только за счёт того, что в троичной записи_выражения меньше ненулевых троичных цифр, чем в двоичной записи_числа. Обе записи, и троичная запись выражения и двоичная запись числа используют двоичный и только двоичный базис.
P.S. Благодаря тому, что такая запись выражений имеет количество цифр больше, чем базис системы счисления, вынужденно возникает многовариантность записи некоторых чисел. Эта многовариантность и напомнила мне подход к записи чисел в Фибоначчиевых системах записи.
Тогда десятичная запись двойки будет "2", двоичная запись двойки будет "10", а троичная (симметричная) запись двойки будет "+-".
Первая запись расшифровывается как (10^0)*2=1*2=2,
вторая - как (2^1)*1+(2^0)*0=2*1+1*0=2+0=2,
третья - как (3^1)*(+1)+(3^0)*(-1)=3*(+1)+1*(-1)=3-1=2.
Как будут записываться и как расшифровываться числовые величины в упомянутом вами "двоичном базисе с троичным алфавитом" - сказать не могу, мне такой тип записи_чисел неведом. Благодаря исходной статье я познакомился с записью_выражений, которая действительно строится на "двоичном базисе с троичным алфавитом", но это запись выражений, а не чисел.
Если же приглядеться к исходной статье, на которую я пытался обратить внимание читателей форума, то там используются _только_ десятичный и двоичный базисы. Строки записей, содержащих цифры троичного диапазона "+", "0", "-" это не запись чисел, а запись выражений, соответствующих числам - таких выражений, которые позволяют выполнить операцию умножения меньшим числом базовых операций, только за счёт того, что в троичной записи_выражения меньше ненулевых троичных цифр, чем в двоичной записи_числа. Обе записи, и троичная запись выражения и двоичная запись числа используют двоичный и только двоичный базис.
P.S. Благодаря тому, что такая запись выражений имеет количество цифр больше, чем базис системы счисления, вынужденно возникает многовариантность записи некоторых чисел. Эта многовариантность и напомнила мне подход к записи чисел в Фибоначчиевых системах записи.
-
- Doomed
- Posts: 633
- Joined: 27 Jul 2018 12:07
Re: "Скрещивание" двоичного и троичного подхода.
А выражения у Вас получается состоят не из чисел? А такой себе магической субстанции "+", 0, "-"? Да, здесь чайок не поможет - пиво брать нужно... К базисам в статье я пригляделся и к названию Вашего топика. Если бы Вы назвалиkvas wrote:Я не очень понимаю, чем двойка или единица десятичной системы отличаются от двойки или единицы двоичной или троичной систем. Буду полагать, что вы имели в виду не числовые величины, а запись соответствующих чисел в той или иной системе счисления. Если ошибся в догадках - прошу прощения.
Тогда десятичная запись двойки будет "2", двоичная запись двойки будет "10", а троичная (симметричная) запись двойки будет "+-".
Первая запись расшифровывается как (10^0)*2=1*2=2,
вторая - как (2^1)*1+(2^0)*0=2*1+1*0=2+0=2,
третья - как (3^1)*(+1)+(3^0)*(-1)=3*(+1)+1*(-1)=3-1=2.
Как будут записываться и как расшифровываться числовые величины в упомянутом вами "двоичном базисе с троичным алфавитом" - сказать не могу, мне такой тип записи_чисел неведом. Благодаря исходной статье я познакомился с записью_выражений, которая действительно строится на "двоичном базисе с троичным алфавитом", но это запись выражений, а не чисел.
Если же приглядеться к исходной статье, на которую я пытался обратить внимание читателей форума, то там используются _только_ десятичный и двоичный базисы. Строки записей, содержащих цифры троичного диапазона "+", "0", "-" это не запись чисел, а запись выражений, соответствующих числам - таких выражений, которые позволяют выполнить операцию умножения меньшим числом базовых операций, только за счёт того, что в троичной записи_выражения меньше ненулевых троичных цифр, чем в двоичной записи_числа. Обе записи, и троичная запись выражения и двоичная запись числа используют двоичный и только двоичный базис.
P.S. Благодаря тому, что такая запись выражений имеет количество цифр больше, чем базис системы счисления, вынужденно возникает многовариантность записи некоторых чисел. Эта многовариантность и напомнила мне подход к записи чисел в Фибоначчиевых системах записи.
не "скрещивание" а например: экономия вычислительного процесса при использовании двоичной избыточной системы счисления...