Saya mungkin menghabiskan lebih banyak waktu untuk pertanyaan ini daripada yang seharusnya, tetapi inilah temuan saya.
Saya tidak dapat menemukan contoh penambah awalan paralel "murni" untuk angka negatif. Saya juga berpikir ini adalah masalah terbuka, karena saya belum melihat bukti bahwa itu tidak mungkin.
Yang paling dekat yang bisa saya dapatkan adalah dengan menggunakan tambahan negatif dua langkah negatif (biasanya disingkat nnba dalam literatur). Itu didasarkan pada properti berikut:
Biarkan dan g ( x ) = x n - 1 ¯ x n - 2 . . . x 1 ¯ x 0 . Ini pada dasarnya adalah operasi XOR dengan dan masing - masing. Anda kemudian dapat membuktikannyaf(x)=xn−1¯¯¯¯¯¯¯¯¯¯xn−2...x1¯¯¯¯¯x0g(x)=xn−1xn−2¯¯¯¯¯¯¯¯¯¯...x1x0¯¯¯¯¯0xAA...AA
0x55...55
−(a+nbb)=g(f(a)+f(b)+1)
Di mana sisi kiri adalah jumlah negabinary , sedangkan + di sisi kanan adalah jumlah biner normal.+nb+
Jumlah negatif kemudian dapat dengan mudah dibalik menggunakan properti yang sama tetapi dengan nol operan:
−x=g(f(x)+f(0)+1)
Jadi untuk menemukan jumlah menggunakan pengaya awalan paralel, Anda dapat:
- f(a)f(b)
- +1s1
- s1f(g(s1))
0xAA...AB
=f(0)+1s2
- g(s2)
Saya sebenarnya telah mencoba untuk menemukan adder paralel awalan "murni", tetapi saya menganggapnya terlalu rumit untuk waktu yang ingin saya habiskan untuk itu. Inilah alasannya:
{0,1}n×{0,1}n→{0,1}na∘b=a⋅b¯
(a∘b)∘ca∘(b∘c)=a⋅b¯⋅c¯=a⋅b⋅c¯¯¯¯¯¯¯¯¯¯
c+ic−i¯¯¯¯¯c−ic+i¯¯¯¯¯