Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best way to add two numbers without using the + operator?

A friend and I are going back and forth with brain-teasers and I have no idea how to solve this one. My assumption is that it's possible with some bitwise operators, but not sure.

like image 697
user23126 Avatar asked Dec 13 '08 18:12

user23126


1 Answers

In C, with bitwise operators:

#include<stdio.h>  int add(int x, int y) {     int a, b;     do {         a = x & y;         b = x ^ y;         x = a << 1;         y = b;     } while (a);     return b; }   int main( void ){     printf( "2 + 3 = %d", add(2,3));     return 0; } 

XOR (x ^ y) is addition without carry. (x & y) is the carry-out from each bit. (x & y) << 1 is the carry-in to each bit.

The loop keeps adding the carries until the carry is zero for all bits.

like image 111
Christian C. Salvadó Avatar answered Sep 19 '22 01:09

Christian C. Salvadó