cool! On Sep 10, 12:20 pm, Shishir Mittal <1987.shis...@gmail.com> wrote: > On Tue, Sep 8, 2009 at 2:09 AM, ayush chauhan > <therajput.ay...@gmail.com>wrote: > > > Cud u plz explain the logic behind this? > On Mon, Sep 7, 2009 at 9:44 PM, Gokul <spgo...@gmail.com> wrote: > > > you can try this...... > > int add(int x, int y) > > { > > if (!x) return y; > > else > > return add((x & y) << 1, x ^ y); > > } > > Lets consider you want to add 34590 and 987387065 in decimal notation. > 9 8 7 6 8 7 0 6 5 > + 3 4 5 5 9 0 > --------------------------- > 9 8 7 9 2 2 5 5 5 ----> addition of digits neglecting carry > + 0 0 0 1 1 0 1 0 0 ---> represents carry > -------------------------- > 9 8 7 0 3 2 6 5 5 > + 0 0 1 0 0 0 0 0 0 > --------------------------- > 9 8 8 0 3 2 6 5 5 > + 0 0 0 0 0 0 0 0 0 > > So ans is 988032655. > > Similarly, In terms of bit representation, for addition of two numbers 'x' > and 'y', (x&y)<<1 represents the carry number and x^y represents the number > neglecting the carry. So for example let the number is 43 & 14. > > x = 43 = 1 0 1 0 1 1 > y = 14 = 0 0 1 1 1 0 > > 1 0 1 0 1 1 > + 0 0 1 1 1 0 > ------------------ > 1 0 0 1 0 1 ---> x^y > + 0 1 0 1 0 0 ---> (x&y)<<1 > ------------------ > 1 1 0 0 0 1 > + 0 0 1 0 0 0 > ------------------ > 1 1 1 0 0 1 > + 0 0 0 0 0 0 > ------------------ > > hence 43 + 14 = 111001 = 57 > > -- > Shishir Mittal > Ph: +91 9936 180 121
--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/algogeeks -~----------~----~----~----~------~----~------~--~---