คำนำหน้าเซลล์ adder แบบขนานใน Negabinary


14

ฉันกำลังพยายามออกแบบตัวเสริมคำนำหน้าแบบขนานสำหรับแอดเดอร์พื้นฐานที่ใช้ negabinary Negabinary เป็นฐานแทนคุ้นเคยฐาน2ไบนารี ตัวบวก 1 บิตแต่ละตัวจะสร้างผลรวมและสองตัว (แทนที่จะเป็นหนึ่งในรูปแบบไบนารี) ที่นำไปสู่ตัวบวกถัดไป-22

เพื่อให้แอดเดอร์เร็วขึ้นฉันต้องการใช้โครงสร้างคำนำหน้าแบบขนานเช่นโครงสร้าง Ladner-Fischer ตามที่ระบุด้านล่าง ฉันคุ้นเคยกับการทำงานของเซลล์สีม่วงในระบบเลขฐานสอง แต่ฉันไม่แน่ใจว่าจะใช้ฟังก์ชันการทำงานแบบเดียวกันในระบบ negabinary ได้อย่างไร

เหตุผลที่ฉันทำสิ่งนี้เป็นเพียงเพื่อความสนุกฉันยังไม่พบการใช้งานใด ๆ สำหรับ negabinary

สูตรสำหรับการคำนวณผลรวมและนำไปใช้:

sผม=aผม⊕ขผม⊕(คผม++คผม-)

คผม+1+=aผม¯ขผม¯คผม+¯คผม-

คผม+1-=aผมขผมคผม-¯+aผมคผม+คผม-¯+ขผมคผม+คผม-¯

Ladner-fischer มีโครงสร้างต้นไม้:

ป้อนคำอธิบายรูปภาพที่นี่

หากมีสิ่งใดไม่ชัดเจนโปรดอย่าลังเลที่จะถาม


แม้ว่านี่อาจเป็นคำถามที่น่าสนใจ แต่ดูเหมือนว่าจะไม่ใช่คำถามเกี่ยวกับไฟฟ้าและคุณอาจมีโชคที่ดีกว่าในการนำคณิตศาสตร์ SE มาใช้
— Redja

3
ฉันใส่ที่นี่เพราะฉันคิดว่าคน EE มีประสบการณ์มากขึ้นกับการใช้ตรรกะในการออกแบบการออกแบบอุปกรณ์เสริม ฯลฯ
— gilianzz

นี่เป็นคำถามทั้งหมดของ EE
— Voltage Spike

ดูเหมือนว่าคุณต้องการเอาต์พุตมากกว่าสองต่อการพกพา คุณไม่จำเป็นต้องสร้างและเผยแพร่สำหรับทั้งการพกพาและการยืมหรือไม่
— สิ้นเชิง

ฉันสมมติว่าคุณกำลังพูดถึงโครงสร้าง Ladner-fischer มันเป็นเพียงตัวอย่างเพื่ออวดต้นไม้นำหน้าแบบขนาน adder negabinary 1 บิตแต่ละอันจะมีผลรวมเป็นผลบวกและลบ ฉันไม่แน่ใจว่าเราสามารถใช้แนวคิดของการสร้างและเผยแพร่ด้วย negabinary
— gilianzz

คำตอบ:


1

ฉันอาจใช้เวลากับคำถามนี้มากกว่าที่ควรจะเป็น แต่นี่คือข้อค้นพบของฉัน

ฉันไม่พบตัวอย่างของ adder ขนาน "บริสุทธิ์" ใด ๆ สำหรับตัวเลข negabinary ฉันก็คิดว่ามันเป็นปัญหาที่เปิดกว้างเพราะฉันไม่ได้เห็นข้อพิสูจน์ว่ามันเป็นไปไม่ได้

ที่ใกล้เคียงที่สุดที่ฉันสามารถรับคุณคือการใช้สองสามขั้นตอนเชิงลบเชิงลบ มันขึ้นอยู่กับคุณสมบัติดังต่อไปนี้:

f(x)=xn−1¯xn−2...x1¯x0g(x)=xn−1xn−2¯...x1x0¯0xAA...AA0x55...55

−(a+nbb)=g(f(a)+f(b)+1)

+nb+

ผลรวมเชิงลบนั้นสามารถกลับด้านได้โดยใช้คุณสมบัติเดียวกัน แต่มีตัวถูกดำเนินการศูนย์:

−x=g(f(x)+f(0)+1)

ดังนั้นเพื่อหาผลรวมโดยใช้โปรแกรมเสริมส่วนนำหน้าแบบขนานคุณสามารถ:

  1. f(a)f(b)
  2. +1s1
  3. s1f(g(s1))
  4. 0xAA...AB=f(0)+1s2
  5. g(s2)

จริง ๆ แล้วฉันพยายามค้นหา adder ที่ขนานกันแบบ "บริสุทธิ์" แต่ฉันคิดว่ามันซับซ้อนเกินไปสำหรับเวลาที่ฉันยินดีจ่าย นี่คือเหตุผล:

{0,1}n×{0,1}n→{0,1}na∘b=a⋅b¯

(a∘ข)∘ค=a⋅ข¯⋅ค¯a∘(ข∘ค)=a⋅ข⋅ค¯¯

คผม+คผม-¯คผม-คผม+¯


ความเข้าใจปัจจุบันของฉันคือในความเป็นจริงมันเป็นไปไม่ได้ที่จะสร้าง adder ขนาน "บริสุทธิ์" นี้ ดูเหมือนว่าแอดเดอร์ตัวนำหน้าแบบขนานจะได้ประสิทธิภาพของ O (log (N)) ในขณะที่ค่าที่เป็นลบนั้นดูเหมือนว่าจะมีความซับซ้อน O (2 * log (N)) (2x nnba) เสมอ
— gilianzz

ฉันไม่พบวรรณกรรมใด ๆ พิสูจน์หรือระบุว่ามันเป็นไปไม่ได้ ฉันยินดีที่จะได้รับการพิสูจน์ผิดทั้งสองวิธี แต่ nnba แบบสองขั้นตอนดูเหมือนจะเป็นมาตรฐานสำหรับการเพิ่มในเชิงลบตามที่ฉันสามารถบอกได้
— สเวน B
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.