Sep 082012

Write a function that accepts two unsigned int and return sum of these two integers. The function should not use any arithmetic operator (mayuse bitwise operators only).


Using Bitwise operator we can find the Sum-bit of two bits using the XOR operator and Carry-bit using AND operator, as shown below in the truth table

x   y  SUM  CARRY
--  -- ---  -----
0   0   0     0
0   1   1     0
1   0   1     0
1   1   0     1

We can extend this logic (of adding two bits) for large integers. We use the fact that if the two integers have different bits at same positions then XOR (^) will return Sum of these two integers and there will be no carry

a = 5  = 0101
b = 10 = 1010
XOR    = 1111 = 15 (5+10)

If there are some Common bits, then we can have a combined carry (carry of all the common bits) by taking Bitwise-AND of two numbers. Hence the Algo can be

sum = a;

while(b != 0)
    carry = a AND b
    sum = sum XOR b
    b = carry << 1   // Because Carry of position i' gets added to (i+1)


unsigned int add(unsigned int a, unsigned int b)
    while (b != 0)
        int carrb = a & b;  
        a = a ^ b; 
        b = carrb << 1;
    return a;

  One Response to “Add two integers without using arithmetic operator”

Comments (1)
  1. hi i am looking the code for adding two integers without using the arithmetic operator here i found the complete information thank you for giving this type of information give some more updates about C language thanks
    I am a professional blogger, present started writing artilces on administrative assistant job description

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>