Friday, 10 August 2012

ADD TWO NUMBERS WITHOUT INCREMENT ,DECREMENT,AIRTHMETIC

EXAMPLE:
For adding x=6 and y=10

 
          6            ----> 0 1 1 0
          10           ----> 1 0 1 0
                       ------------------
(1) XOR(6^10)          ----> 1 1 0 0            carry(6&10) ----> 0 0 1 0
(2) carry(6&10) << 1   ----> 0 1 0 0
                       ------------------
(3) [1] OR [2]         ----> 1 1 0 0  = ( 12)  carry(12&4)  ----> 0 1 0 0 
(4) carry(12&4) << 1   ----> 1 0 0 0 
                       -------------------
[3] OR [4]             ----> 1 0 0 0 = (16)

Code:
int Add(int x, int y)
{ 
    while (y != 0)
    {
        int carry = x & y; 
        x = x ^ y;
        y = carry << 1;
    }
    return x;
}

No comments: