Функции троичного сумматора на основе таблицы суммирования

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

tvitaly1
Writer
Posts: 12
Joined: 24 Oct 2022 14:34

Функции троичного сумматора на основе таблицы суммирования

Post by tvitaly1 »

Таблица Сложения
Ī+I = ĪI 0+Ī=Ī I+Ī=0
Ī+0 = Ī 0+0=0 I+0=I (3)
Ī+I = 0 0+I=I I+I=IĪ
'Тихвинский В.И. функции сумматора на основе таблиц сложения
'A, B, P_1 - первое, второе слагаемое и перенос из предыдущего разряда
'S,P - функции суммы и переноса
'массивы данных и подпраграмма инициализации lfyys[
Dim SD(-1 To 1, -1 To 1) As Integer, PD(-1 To 1, -1 To 1) As Integer
Sub iniSP()
If SD(-1, -1) = 0 Then
'таблицы суммирования и переноса
SD(-1, -1) = 1: SD(0, -1) = -1: SD(1, -1) = 0
SD(-1, 0) = -1: SD(0, 0) = 0: SD(1, 0) = 1
SD(-1, 1) = 0: SD(0, 1) = 1: SD(1, 1) = -1
PD(-1, -1) = -1: PD(0, -1) = 0: PD(1, -1) = 0
PD(-1, 0) = 0: PD(0, 0) = 0: PD(1, 0) = 0
PD(-1, 1) = 0: PD(0, 1) = 0: PD(1, 1) = 1
End If
End Sub

Function S(A, B, P_1)
iniSP
S = SD(SD(A, B), P_1)
End Function

Function P(A, B, P_1)
iniSP
P1 = PD(A, B)
P = P1 + PD(SD(A, B), P_1)
End Function
You do not have the required permissions to view the files attached to this post.
tvitaly1
Writer
Posts: 12
Joined: 24 Oct 2022 14:34

Re: Функции троичного сумматора на основе таблицы суммирован

Post by tvitaly1 »

tvitaly1 wrote:Таблица Сложения
Ī+I = ĪI 0+Ī=Ī I+Ī=0
Ī+0 = Ī 0+0=0 I+0=I (3)
Ī+I = 0 0+I=I I+I=IĪ
'Тихвинский В.И. функции сумматора на основе таблиц сложения
'A, B, P_1 - первое, второе слагаемое и перенос из предыдущего разряда
'S,P - функции суммы и переноса
'массивы данных и подпраграмма инициализации lfyys[
Dim SD(-1 To 1, -1 To 1) As Integer, PD(-1 To 1, -1 To 1) As Integer
Sub iniSP()
If SD(-1, -1) = 0 Then
'таблицы суммирования и переноса
SD(-1, -1) = 1: SD(0, -1) = -1: SD(1, -1) = 0
SD(-1, 0) = -1: SD(0, 0) = 0: SD(1, 0) = 1
SD(-1, 1) = 0: SD(0, 1) = 1: SD(1, 1) = -1
PD(-1, -1) = -1: PD(0, -1) = 0: PD(1, -1) = 0
PD(-1, 0) = 0: PD(0, 0) = 0: PD(1, 0) = 0
PD(-1, 1) = 0: PD(0, 1) = 0: PD(1, 1) = 1
End If
End Sub

Function S(A, B, P_1)
iniSP
S = SD(SD(A, B), P_1)
End Function

Function P(A, B, P_1)
iniSP
P1 = PD(A, B)
P = P1 + PD(SD(A, B), P_1)
End Function
Расширил диапазон кодирования чисел
Тихвинский В.И. функции сумматора на основе таблиц сложения
'A, B, P_1 - первое, второе слагаемое и перенос из предыдущего разряда
'S,P - функции суммы и переноса
'массивы данных и подпрограмма инициализации их iniSP()
Dim SD(-1 To 1, -1 To 1) As Integer, PD(-1 To 1, -1 To 1) As Integer
'массив возможного кодирования цифр и N-номер кодирования
Dim Sim(1 To 3, -1 To 1), N

Sub iniSP()
If SD(-1, -1) = 0 Then
'таблицы суммирования и переноса
SD(-1, -1) = 1: SD(0, -1) = -1: SD(1, -1) = 0
SD(-1, 0) = -1: SD(0, 0) = 0: SD(1, 0) = 1
SD(-1, 1) = 0: SD(0, 1) = 1: SD(1, 1) = -1
PD(-1, -1) = -1: PD(0, -1) = 0: PD(1, -1) = 0
PD(-1, 0) = 0: PD(0, 0) = 0: PD(1, 0) = 0
PD(-1, 1) = 0: PD(0, 1) = 0: PD(1, 1) = 1
Sim(1, -1) = -1: Sim(1, 0) = 0: Sim(1, 1) = 1
' +; 0-нуль; -
Sim(2, -1) = "-": Sim(2, 0) = "0": Sim(2, 1) = "+"
' N; Z; P
Sim(3, -1) = "N": Sim(3, 0) = "Z": Sim(3, 1) = "P"

End If
End Sub
Function NN(A)
For N = 1 To 3
For J = -1 To 1
If A = Sim(N, J) Then
'перевод A в цифру
A = Sim(1, J)
'номер кодирования
NN = N
Exit Function
End If
Next J
Next N
End Function


Function S(A, B, P_1)
iniSP
N = NN(A)
N = NN(B)
N = NN(P_1)
S1 = SD(SD(A, B), P_1)
S = Sim(N, S1)
End Function

Function P(A, B, P_1)
iniSP
N = NN(A)
N = NN(B)
N = NN(P_1)
P1 = PD(A, B) + PD(SD(A, B), P_1)
P = Sim(N, P1)
End Function
You do not have the required permissions to view the files attached to this post.