nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 16 Apr 2024 08:28



Reply to topic  [ 2 posts ] 
Функции троичного сумматора на основе таблицы суммирования 
Author Message
Writer

Joined: 24 Oct 2022 14:34
Posts: 12
Reply with quote
Таблица Сложения
Ī+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


Attachments:
11 Nov 2022 11:26
Profile
Writer

Joined: 24 Oct 2022 14:34
Posts: 12
Reply with quote
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


Attachments:
12 Nov 2022 05:06
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 2 posts ] 

Who is online

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