nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 29 Mar 2024 00:16



Reply to topic  [ 45 posts ]  Go to page Previous  1, 2, 3
Троичный конвертер онлайн 
Author Message
Junior

Joined: 20 Mar 2023 20:49
Posts: 3
Location: Москва
Reply with quote
Вчера попал на этот чудный форум! Прочитав статью на хабре администратора. Зачитался тут темами, что не заметил, как и утро наступило :lol:
Спасибо за толковый и полезный контент! Но помимо благодарностей хотел бы и свои "пять копеек" внести.
По поводу конвертации систем счисления из одной в другие и т.д. В случае с троичной системой не нужно 9-иричную никакую , как и 8-ая в двоичной - давно архаизм. На заре "двоичности" Oктет был популярен тем что упрощал счёт. Сейчас уже давно никто не заморачивается такими переводами. Только в виндовс калькуляторе OCT, как экзотика, ещё присутствует. А вот HEX востребован в двоичной. Аналогично и в троичной больше 27-иричная СС актуальна.
Встречал тут термин "триада" применительно к 3 тритам. По мне это не верно. Хотя ещё стандартов вроде тут никаких нет, нет ещё такой путаницы , как с приставками Си и бито-байтами(типа кило, мега, гига и т.д. в Си 1 в 10 степени = кило, у кого то 2 в 10 степени кило почему то получается) но мне всё условно правильно представляется так, как хотел бы изложить ниже.
Единицы хранения информации
Бит(bit) - происходит от латинского bis(дважды).
Трит(trit) - скорее происходит от логической связки с битом, ну и с латински числительным сочетается - tria(три). Хотя это не трижды никак.
Производные от базовых единиц
Байт(byte) - в двоичной системе счисления 8 бит. Он же октетом именуется, т.к. октет это 8-ка.
Остальное логическое соотв.
Дуэт - в троичной системе счисления 2 трит.
Терцет(или трио, но никак не триада) - в троичной системе счисления 3 трит.
Квартет - в троичной системе счисления 4 трит.
Квинтет - в троичной системе счисления 5 трит.
Секстет - в троичной системе счисления 6 трит.
Септет - в троичной системе счисления 7 трит.
Октет - в троичной системе счисления 8 трит.
Трайт - в троичной системе счисления 9 трит.
Последнее - аналогия с байтом опять таки. Т.к. байт это 2 в степени 2, трайт - 3 в степени 2. Хотя это всё условно и зависит от того как будет принято сообществом. Трайт=9тритам очень большое количество значений имеет. Считать его словом накладно. 4-5 тритов в памяти просто без дела в большинстве вариантов лежать будут.А процессор только туда сюда бестолковые старшие нули гонять. Которые никакой информации не несут. В Сетуни за трайт было принято 6 трит, т.е. секстет! Оптимальный размер трайта примерно в пределах 5-6 трит должен находиться(243-729 значений).
Сокращения принятые в обозначении систем счисления
DEC - сокращение от deca(10-и). Обозначает десятичное основание системы счисления.
HEX - сокращение от hexadeca(16-и) и обозначает шеснадцатиричное основание системы счисления.
HEP - сокращение от heptacosa(27-и). Обозначает двадцатисемиричное основание системы счисления.
OCT из той же греко-римской серии...
Представление числа
Числа в десятичной(DEC) системе представлены цифрами от 0 до 9.
Числа в троичной системе представлены цифрами от 0 до 2-х или от -1 до +1.
Числа в HEP до 10-го знака представляются цифрами от 0 до 9, а от 10-го до 27-го знака символами латинского алфавита от A до S. Из очердёности алфавитного ряда исключены сымволы I и O из-за их визуальной схожести с 0 и 1.
Конвертер- калькулятор перевода из DEC в HEP и троичную систему в виде html страницы прикреплён к посту. Помимо прочего я ещё там реализовал представление в цвете RGB. Полезно бывает когда на ряд светодиодов смотришь считать :rotate:


Attachments:
File comment: При желании можно добавить перевод и в другие системы.
калькулятор.zip [1.46 KiB]
Downloaded 105 times
20 Mar 2023 21:52
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
А где-то есть реальный сайт, где этот код крутится?

P.S. Сначала перенёс вышестоящее сообщение в отдельный топик, а потом решил вернуть сюда (раз уж мы от джавы плавно перешли к абстрактному "онлайн")...

_________________
:dj: https://mastodon.social/@Shaos


25 Mar 2023 22:15
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Пришло время переписать мой конвертер с джавы на что-то более дружелюбное для современных браузеров - в частности как я недавно показал писать можно прямо на языке Robby (чтобы в случае чего можно было легко портануть такое онлайн-приложение на поддерживаемые nedoPC SDK ретро-компьютеры) и оно будет запускаться в браузере с помощью моего фреймворка Rgrid,js. Заодно можно кое-что из конвертера Лавра реализовать ;)

Основой джавовской версии конвертера являются вот эти 2 функции, переводящие число в троичное представление и обратно:
Code:
public static String toTernary(int num)
 {
    int n,m,k;
    String s = null;
    k = 387420489;
    for(int i=0;i<=18;i++)
    {
      n = num/k;
      num -= n*k;
      m = k/2;
      if(num>+m){n++;num-=k;}
      if(num<-m){n--;num+=k;}
      if(n!=0 && s==null) s="";
      if(n==-1) s+="N";
      if(n==0 && s!=null) s+="O";
      if(n==1) s+="P";
      k /= 3;
    }
    return s;
 }
 
 public static int fromTernary(String s)
 {
    int n = 0;
    int k = 1;
    for(int i=s.length()-1;i>=0;i--)
    {
      char c = s.charAt(i);
      if(c!='N'&&c!='O'&&c!='P') return 0;
      if(c=='N') n-=k;
      if(c=='P') n+=k;
      k *= 3;
    }
    return n;
 }

Тут предполагается, что используются целые 32-битные числа со знаком, а Robby как известно работает с 16-битными целыми числами со знаком, хотя я планировал некоторые хитрости с переполнением (наличие регистра старшего слова результата H - см. тут) и JS-реализация уже всё считает в нативных целых числах без явных ограничений на 16 бит - обрезается оно только при сохранении в память или регистры. Разраядность троичных чисел у меня в конвертере до 18 (константа 387420489, которую можно видеть в функции toTernary это 3^18). Если допустить отображение "binary coded ternary", то надо будет до 36 битов поддержать, значит для круглоты - 48 бит, а для всеобщей охватываемости можно ещё и опцию отображения 64 битов добавить (это будет до 40 тритов в непосредственном отображении либо 32 трита в режиме "binary coded ternary") - явное задание двоичной разрядности нужно для того, чтобы корректно отображать отрицательные числа (все старшие биты у которых будут заполнены единичками).

_________________
:dj: https://mastodon.social/@Shaos


22 Apr 2023 21:33
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
По интерфейсу - делаем как и было:
- троичное представление (NOP),
- десятичное (0...9),
- шестнадцатиричное (0...F),
- двоичное (0,1),
а также до кучи:
- восьмиричное (0...7),
- девятиричное (DCBA01234 как в Тунгуске),
- и может быть даже 27-ричное :o

Можно сделать чекбокс "Binary Coded Ternary" для того, чтобы посмотреть как оно будет выглядеть в двоичном виде, а также радио-кнопки 16-bit, 32-bit и 48-bit (64 наверное уже лишнее), чтобы только ограниченное количество старших битов заполнять единичками в случае отрицательных чисел.

P.S. С другой стороны 48 битов совсем левое число - надо делать стандартный набор - 16, 32 и 64 (в 64 бита должно влезать 40 тритов).

P.P.S. А по троичности наверное 36 тритов будет более чем достаточно (сверху старшие 18, снизу младшие 18):


Attachments:
Screenshot from 2023-04-27 22-12-25.png
Screenshot from 2023-04-27 22-12-25.png [ 12.96 KiB | Viewed 3408 times ]

_________________
:dj: https://mastodon.social/@Shaos
26 Apr 2023 01:17
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Кликать на лампочки тоже можно будет :)



Attachments:
video-2023-04-27_23.05.12.mp4 [79.36 KiB]
Downloaded 142 times

_________________
:dj: https://mastodon.social/@Shaos
27 Apr 2023 23:10
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Вот как-то так оно будет выглядеть:

Attachment:
Screenshot from 2023-04-28 01-43-32.png
Screenshot from 2023-04-28 01-43-32.png [ 71.69 KiB | Viewed 3392 times ]

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

_________________
:dj: https://mastodon.social/@Shaos


28 Apr 2023 01:30
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Есть вот такая простенькая штука онлайн на js: Калькулятор
Attachment:
Калк.PNG
Калк.PNG [ 17.66 KiB | Viewed 3374 times ]

_________________
iLavr


28 Apr 2023 03:57
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Оно не "по феншую" - нету NOP и девятеричная система не как в Тунгуске :roll:

_________________
:dj: https://mastodon.social/@Shaos


28 Apr 2023 08:40
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Оно не "по феншую" - нету NOP и девятеричная система не как в Тунгуске :roll:

Когда ничего нету, пожалуй, и Оно не "по феншую" - сойдёт... крайне мало такого софта онлайн... :-?

_________________
iLavr


28 Apr 2023 08:53
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Lavr wrote:
Shaos wrote:
Оно не "по феншую" - нету NOP и девятеричная система не как в Тунгуске :roll:

Когда ничего нету, пожалуй, и Оно не "по феншую" - сойдёт... крайне мало такого софта онлайн... :-?

Ну значит сделаем такого софта больше :)

_________________
:dj: https://mastodon.social/@Shaos


28 Apr 2023 22:10
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Shaos wrote:
Lavr wrote:
Shaos wrote:
Оно не "по феншую" - нету NOP и девятеричная система не как в Тунгуске :roll:
Когда ничего нету, пожалуй, и Оно не "по феншую" - сойдёт... крайне мало такого софта онлайн... :-?
Ну значит сделаем такого софта больше :)

Вот это правильно! :kruto: Я тоже свой конвертер под JS перепишу позже, когда время будет...
И практика показала - ещё бы неплохо сразу 4 математических операции вделать в эти программы.

_________________
iLavr


29 Apr 2023 02:09
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Ну я пока думаю иметь +1 -1 *3 и /3, а также универсальная унарная операция будет, которая задаётся тремя триадами (NOP=тоже самое, PON=инверсия и т.д.)

_________________
:dj: https://mastodon.social/@Shaos


29 Apr 2023 11:23
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Есть очень интересный калькулятор онлайн - считает и показывает процесс, как считал:
Сложение, умножение и деление чисел в различных системах счисления

В троичной системе 0,1,2 - тоже умеет, а вот в троичной симметричной системе - нет... :-?

_________________
iLavr


29 Apr 2023 12:10
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Attachment:
Screenshot from 2023-04-30 11-33-59.png
Screenshot from 2023-04-30 11-33-59.png [ 73.51 KiB | Viewed 3241 times ]

Под спойлером HTML часть нового веб-приложения Balanced Ternary Converter (как на картинке выше - оно меняться уже не будет, ну разве что байткод робота прямо туда же зафигачу, когда закончу)

 HTML
Code:
<HTML>
<HEAD><TITLE>Ternary Converter</TITLE>
<META HTTP-EQUIV="Content-Language" content="en">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=utf-8">
<SCRIPT type="text/javascript" src="Rgrid.js"></SCRIPT>
<SCRIPT type="text/javascript" src="robot1.js"></SCRIPT>
</HEAD>
<BODY BGCOLOR=#FFFFFF TEXT=#000000 LINK=#000080>
<center><h1>Balanced Ternary Converter</h1></center>
<p id="here" align=center>Rgrid requires a modern web-browser to work properly...</p>
<p align=center>
<table>
<tr>
<td width=400><font color=#0000AA>Balanced Ternary (N,O,P)</font></td>
<td width=400 align=right><input type=text id=input3 size=36 onchange="$R.event(0,-303,$_('input3'))"></td>
</tr>
<tr>
<td width=400><font color=#0000AA>Balanced Nonary (D,C,B,A,0,1,2,3,4)</font></td>
<td width=400 align=right><input type=text id=input9 size=36 onchange="$R.event(0,-309,$_('input9'))"></td>
</tr>
<tr>
<td width=400><font color=#0000AA>Balanced Septemvigesimal (N-Z,0-9,A-D)</font></td>
<td width=400 align=right><input type=text id=input27 size=36 onchange="$R.event(0,-327,$_('input27'))"></td>
</tr>
<tr>
<td width=400><p id="output">0</p></td>
<td width=400 align=right>
<input type=checkbox id=inputbct onchange="$R.event(0,-400,$_('inputbct'))"> BCT*
<input type=radio name=limit id=radio16 checked onchange="$R.event(0,-116,$_('radio16'))"> 16-bit
<input type=radio name=limit id=radio32 onchange="$R.event(0,-132,$_('radio32'))"> 32-bit
<input type=radio name=limit id=radio64 onchange="$R.event(0,-164,$_('radio64'))"> 64-bit
</td>
</tr>
<tr>
<td width=400>Binary (0,1)</td>
<td width=400 align=right><input type=text id=input2 size=36 onchange="$R.event(0,-202,$_('input2'))"></td>
</tr>
<tr>
<td width=400>Octal (0,1,2,3,4,5,6,7)</td>
<td width=400 align=right><input type=text id=input8 size=36 onchange="$R.event(0,-208,$_('input8'))"></td>
</tr>
<tr>
<td width=400>Hexadecimal (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)</td>
<td width=400 align=right><input type=text id=input16 size=36 onchange="$R.event(0,-216,$_('input16'))"></td>
</tr>
<tr>
<td width=400>Decimal (0,1,2,3,4,5,6,7,8,9) with sign</td>
<td width=400 align=right><input type=text id=input10 size=36 onchange="$R.event(0,-210,$_('input10'))"></td>
</tr>
<tr>
<td colspan=2 align=center>
<input type=button value="inc" onclick="$R.event(0,-300,1)">
<input type=button value="dec" onclick="$R.event(0,-300,2)">
<input type=button value="mul 3" onclick="$R.event(0,-300,3)">
<input type=button value="div 3" onclick="$R.event(0,-300,4)">
<input type=button value="Any Op =>" onclick="$R.event(0,-300,5)">
<select name="one" id="op1" onchange="$R.event(0,-331,$_('op1'))">
<option value="N" selected>N</option>
<option value="O">O</option>
<option value="P">P</option>
</select>
<select name="two" id="op2" onchange="$R.event(0,-332,$_('op2'))">
<option value="N">N</option>
<option value="O" selected>O</option>
<option value="P">P</option>
</select>
<select name="three" id="op3" onchange="$R.event(0,-333,$_('op3'))">
<option value="N">N</option>
<option value="O">O</option>
<option value="P" selected>P</option>
</select>
</td>
</tr>
</table>
<font size=-1>
* Binary Coded Ternary (BCT) represents every trit by 2 bits: N->10, O->00, P->01 (and 11 means ERROR)
</font>
</p>
<p id="pow" align=center>Powered...</p>

<font size=1 color=#808080>
<p id="after">
&nbsp;<br>
</p>
</font>

</BODY>
<script type="text/javascript">

$R.prefix = "ternary/";

$_("pow","Powered by " + $R.powered());

function command1(r) {
 $append("after","Robot "+r.regs[9]+" : "+r.regs[0xA]+" "+r.regs[0xB]+" "+r.regs[0xC]+"<br>");
}

function command2(r) {
 var id = r.regs[0xA];
 var len = r.regs[0xB];
 var adr = r.regs[0xC];
 var str = "";
 var i,j;
 for(i=0;i<len;i++) {
    str += String.fromCharCode($R.read(r,adr++));
 }
 if(id>=0) {
   $_('output',str);
 }
 else {
   j = -id;
   if(id>-100) {
    j -= 100;
    $_("radio"+j,"1");
   }
   else if(id>-200) {
    j -= 200;
    $_("input"+j,str);
   }
   else // <= -300
   {
    j -= 300;
    $_("input"+j,str);
   }
 }
}

$R.callback(1,command1);
$R.callback(2,command2);

function action(x,y) {
 $R.event(0,-1,1,x,y);
}

if($R.grid('here',18,2,action)>0) {
 $map($$("rtab.*.*"),function(e){e.width=45;e.height=45;});
 $R.add(robot);
 $R.start();
}

</script>
</HTML>

Пишу Robby часть...

_________________
:dj: https://mastodon.social/@Shaos


30 Apr 2023 11:34
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22417
Location: Silicon Valley
Reply with quote
Текущее состояние дел можно посмотреть вот по этому линку (прототип робота зафигачил прямо в HTML):

http://nedopc.org/ternary_converter.html

Принимаются фидбеки...

_________________
:dj: https://mastodon.social/@Shaos


30 Apr 2023 12:01
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 45 posts ]  Go to page Previous  1, 2, 3

Who is online

Users browsing this forum: No registered users and 9 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

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.