Full Adder modified to make Full Subtractor

  • Thread starter Thread starter mm391
  • Start date Start date
  • Tags Tags
    Adder
Click For Summary
SUMMARY

This discussion focuses on modifying an 8-bit full adder to create an 8-bit full subtractor. The key modification involves using inverters on the A inputs and setting the carry-in for the least significant bit (LSB) to 1 for subtraction, effectively implementing two's complement. The carry input functions as a borrow in subtraction, and the output carry represents a negative flag. The discussion emphasizes the use of XOR gates to complement the B input bits based on the operation mode (add or subtract).

PREREQUISITES
  • Understanding of binary arithmetic and two's complement representation
  • Familiarity with digital logic design concepts, specifically full adders and subtractors
  • Knowledge of bitwise operations and their application in arithmetic circuits
  • Experience with logic gate implementation, particularly XOR gates
NEXT STEPS
  • Study the design and implementation of binary parallel adders and subtractors
  • Learn about the role of carry and borrow in digital arithmetic circuits
  • Explore the use of two's complement in signed number representation
  • Review the schematic diagrams for full adders and their modifications for subtraction
USEFUL FOR

Digital circuit designers, computer engineers, and students studying digital logic who are interested in arithmetic circuit design and optimization.

mm391
Messages
65
Reaction score
0
If I was to make a modification to an 8 bit full adder to make it a an eight bit full subtractor would I put an inverter at the carry in input for the first full adder and then an inverter on one of each of the two inputs going into each adder. eg an inverter on A3, A2, A1, A0 and leave B3, B2, B1, B0 alone? (Where 0=add, 1=subtract).

Thanks for your help.

Matt
 
Engineering news on Phys.org
Let's see, if A and B are bit vectors A+B = A xor B + 2* A and B.
With a carry input you add it in: A+B w/C = A xor B + 2*A and B + Cin. Overflow in the 2nd addition is the carry output.

-A = not A +1, (two's complement)[edited]
B-A = Not A + B + 1 = not A xor B + 2* not A and B + 1
Invert A yes.

I'm not clear on the role of carry input for subtraction. It is a borrow, right? So it represents a -1 from the lower word and the output carry will represent a -2^4 to be borrowed from the higher bits or in the end a negative flag.

So yes I think you have it right: B - A w/C = not A xor B + 2*(not A and B) + (1-C)
1-C = not C since this is a 1-bit term.

(I'm working this out using bitwise boolean operations.)

It's been a while since I played with machine level arithmetic. What I suggest is that you work through, bit by bit a few examples and see if the result is as you expect.
 
jambaugh said:
Let's see, if A and B are bit vectors A+B = A xor B + 2* A and B.
With a carry input you add it in: A+B w/C = A xor B + 2*A and B + Cin. Overflow in the 2nd addition is the carry output.

-A = not A +1, (two's complement)[edited]
B-A = Not A + B + 1 = not A xor B + 2* not A and B + 1
Invert A yes.

I'm not clear on the role of carry input for subtraction. It is a borrow, right?

no, it's still a carry or "borrow-not".

it's simple. say you have a full adder, where the carry-out bit of one added bit goes into the carry-in bit if the added bit that is adjacent and more significant. for the LSB, the carry in is set to 0 for simple adding, and you set it to 1 for simple subtraction.

you can make the same adder work for adding and subtracting by putting XOR gates in front of the B input bits and the same line (called the "M" input in the diagram cited) that goes into the other input of the XOR gate (that when set to 1, it complements all of the bits going into the B input) that same line goes into the carry-in of the least significant bit to be that added "1" when doing the two's complement. so it's 0 for add and 1 for subtract.

there's a simple diagram at:

http://implement-logic.blogspot.com/2011/11/binary-parallel-addersubtractor.html

and to fill in the FA block, use:

http://en.wikipedia.org/wiki/File:Full_Adder.svg
 

Similar threads

  • · Replies 6 ·
Replies
6
Views
7K
Replies
7
Views
35K
  • · Replies 10 ·
Replies
10
Views
11K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 1 ·
Replies
1
Views
5K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
Replies
3
Views
4K
  • · Replies 1 ·
Replies
1
Views
3K