Ich versuche, einen parallelen Präfixaddierer für einen auf Negabinary basierenden Addierer zu entwerfen. Negabinary ist Base anstelle der bekannten Base Binary. Jeder 1-Bit-Addierer erzeugt eine Summe und zwei (anstelle von einem in binären) Überträge, die zum nächsten Addierer gehen.
Um den Addierer schneller zu machen, möchte ich eine parallele Präfixstruktur verwenden, wie die unten angegebene Ladner-Fischer-Struktur. Ich bin mit der Funktionalität der violetten Zelle im Binärsystem vertraut, bin mir aber nicht sicher, wie ich die gleiche Funktionalität im Negabinary-System erreichen kann.
Der Grund, warum ich das mache, ist nur zum Spaß, ich habe noch keine Verwendung für Negabinary gefunden.
Formeln zur Berechnung der Summe und Überträge:
Ladner-fischer tragen Baumstruktur:
Wenn etwas unklar ist, zögern Sie bitte nicht zu fragen.
quelle
Antworten:
Ich habe wahrscheinlich mehr Zeit mit dieser Frage verbracht, als ich sollte, aber hier sind meine Ergebnisse.
Ich kann kein Beispiel eines "reinen" parallelen Präfixaddierers für negabinäre Zahlen finden. Ich denke auch, dass es ein offenes Problem ist, da ich keinen Beweis dafür gesehen habe, dass es nicht möglich ist.
Ich kann Sie am ehesten durch eine zweistufige negative Negabinäraddition (in der Literatur häufig mit nnba abgekürzt) erreichen. Es basiert auf der folgenden Eigenschaft:
Sei und g ( x ) = x n - 1 ¯ x n - 2 . . . x 1 ¯ x 0 . Dies sind im Grunde eine XOR-Operation mit und jeweils. Das können Sie dann beweisenf( x ) = xn - 1¯¯¯¯¯¯¯¯¯¯xn - 2. . . x1¯¯¯¯¯x0 G( x ) = xn - 1xn - 2¯¯¯¯¯¯¯¯¯¯. . . x1x0¯¯¯¯¯
0xAA...AA
0x55...55
Die negative Summe kann dann einfach mit derselben Eigenschaft, jedoch mit einem Nulloperanden, invertiert werden:
Um die Summe mit parallelen Präfixaddierern zu ermitteln, können Sie:
0xAA...AB
(Ich habe tatsächlich versucht, einen "reinen" Parallel-Präfix-Addierer zu finden, aber ich fand ihn zu komplex für die Zeit, die ich bereit war, dafür aufzuwenden. Hier ist der Grund:
Der springende Punkt bei parallelen Präfixaddierern ist, eine Operation von zu finden{ 0 , 1 }n× { 0 , 1 }n→ { 0 , 1 }n Auf diese Weise können Sie die Überträge (in diesem Fall 2) aus diesen Bits leicht berechnen. Als zusätzliche Einschränkung muss die Operation assoziativ sein , um parallel berechnet zu werden. Dies schließt beispielsweise grundsätzlich jeden NOT-Operator aus (der nicht Teil einer doppelten Verneinung ist). Beispielsweise:a ∘ b = a ⋅ b¯ ist kein assoziativer Operator, weil
Beachten Sie, dass der Boolesche Operator für die Überträge in Ihrer Frage die gemischten Begriffe enthältc+ichc-ich¯¯¯¯¯ und c-ichc+ich¯¯¯¯¯ , was es unmöglich macht, es so zu benutzen, wie es ist. Für einen einzelnen Übertrag in einer normalen binären Addition wurde es ziemlich offensichtlich, wie dieser Operator zu konstruieren ist, wenn man über seine Erzeugung und Ausbreitung nachdenkt , aber für negative Übertragungen scheint es nicht so offensichtlich zu sein.
quelle