можно проще и быстрее
сначала преобразовать число к 3му с основанием 3 (значаения разрядов 0,1,2) а затем преобразовать к 3му симметричному коду
преобразование к 3му с основанием 3 производится итеративным делением на 3 с выделением остатка в качестве значения следующего разряда (без нализа знака)
преобразование 3го с основанием 3 к 3му симметричному коду производится прибавлением к исходному числу половины максимально представимого данным кол-вом разрядов за вычетом 1 и последующим поразрядным вычитанием 1.
т.е. для трайта (6 тритов) примерно так
обратное преобразование делается в обратном порядке.
и этот вариант проще реализуется в железе.
тут используется N+1 операций деления (при использовании еще одной переменной можно для вычисления остатка от деления на 3 использовать не деление, а вычитание)