# Add two numbers without using arithmetic operators

Last Updated : 29 Dec, 2023

Write a function Add() that returns sum of two integers. The function should not use any of the arithmetic operators (+, ++, –, -, .. etc).

Method 1:

## C++

 `#include ` `using` `namespace` `std;`   `int` `add(``int` `a, ``int` `b)` `{` `    ``// for loop will start from 1 and move till the value of` `    ``// second number , first number(a) is incremented in for` `    ``// loop` `    ``for` `(``int` `i = 1; i <= b; i++)` `        ``a++;` `    ``return` `a;` `}`   `int` `main()` `{` `    ``// first number is 10 and second number is 32 , for loop` `    ``// will start from 1 and move till 32 and the value of a` `    ``// is incremented 32 times which will give us the total` `    ``// sum of two numbers`   `    ``int` `a = add(10, 32);` `    ``cout << a;` `    ``return` `0;` `}`   `// This code is contributed by Aditya Kumar (adityakumar129)`

## C

 `#include `   `int` `add(``int` `a, ``int` `b)` `{` `    ``// for loop will start from 1 and move till the value of` `    ``// second number , first number(a) is incremented in for` `    ``// loop` `    ``for` `(``int` `i = 1; i <= b; i++)` `        ``a++;` `    ``return` `a;` `}`   `int` `main()` `{` `    ``// first number is 10 and second number is 32 , for loop` `    ``// will start from 1 and move till 32 and the value of a` `    ``// is incremented 32 times which will give us the total` `    ``// sum of two numbers`   `    ``int` `a = add(10, 32);` `    ``printf``(``"%d"``, a);` `    ``return` `0;` `}`   `// This code is contributed by Aditya Kumar (adityakumar129)`

## Java

 `import` `java.util.*;`   `class` `GFG {`   `    ``static` `int` `add(``int` `a, ``int` `b)` `    ``{` `        ``// for loop will start from 1 and move till the` `        ``// value of second number , first number(a) is` `        ``// incremented in for loop` `        ``for` `(``int` `i = ``1``; i <= b; i++)` `            ``a++;` `        ``return` `a;` `    ``}`   `    ``public` `static` `void` `main(String[] args)` `    ``{` `        ``// first number is 10 and second number is 32 , for` `        ``// loop will start from 1 and move till 32 and the` `        ``// value of a is incremented 32 times which will` `        ``// give us the total sum of two numbers` `        ``int` `a = add(``10``, ``32``);` `        ``System.out.print(a);` `    ``}` `}`   `// This code is contributed by Aditya Kumar (adityakumar129)`

## Python3

 `# Python implementation` `def` `add(a, b):` `    ``# for loop will start from 1 and move till the value of second number ,` `    ``# first number(a) is incremented in for loop` `    ``for` `i ``in` `range``(``1``, b ``+` `1``):` `        ``a ``=` `a ``+` `1` `    ``return` `a`     `# driver code` `# first number is 10 and second number is 32 , for loop` `# will start from 1 and move till 32 and the value of a` `# is incremented 32 times which will give us the total` `# sum of two numbers` `a ``=` `add(``10``, ``32``)` `print``(a)`   `# This code is contributed by Aditya Kumar (adityakumar129)`

## C#

 `using` `System;` `public` `class` `GFG {`   `  ``static` `int` `add(``int` `a, ``int` `b) {` `    ``for` `(``int` `i = 1; i <= b; i++) ``// for loop will start from 1 and move till the value of second` `      ``// number , first number(a) is incremented in for loop` `    ``{` `      ``a++;` `    ``}` `    ``return` `a;` `  ``}`   `  ``public` `static` `void` `Main(String[] args) ` `  ``{`   `    ``int` `a = add(10, 32); ``// first number is 10 and second number is 32 , for loop will start` `    ``Console.Write(a); ``// from 1 and move till 32 and the value of a is incremented 32 times` `    ``// which will give us the total sum of two numbers` `  ``}` `}`   `// This code is contributed by Rajput-Ji `

## Javascript

 ``

Output

```42
```

Time Complexity: O(b)
Auxiliary Space: O(1)

Above is simple Half Adder logic that can be used to add 2 single bits. We can extend this logic for integers. If x and y don’t have set bits at same position(s), then bitwise XOR (^) of x and y gives the sum of x and y. To incorporate common set bits also, bitwise AND (&) is used. Bitwise AND of x and y gives all carry bits. We calculate (x & y) << 1 and add it to x ^ y to get the required result.

## C++

 `// C++ Program to add two numbers ` `// without using arithmetic operator ` `#include ` `using` `namespace` `std;`   `int` `Add(``int` `x, ``int` `y) ` `{ ` `    ``// Iterate till there is no carry ` `    ``while` `(y != 0) ` `    ``{ ` `        ``// carry should be unsigned to ` `        ``// deal with -ve numbers` `        ``// carry now contains common ` `        ``//set bits of x and y ` `        ``unsigned carry = x & y; `   `        ``// Sum of bits of x and y where at ` `        ``//least one of the bits is not set ` `        ``x = x ^ y; `   `        ``// Carry is shifted by one so that adding ` `        ``// it to x gives the required sum ` `        ``y = carry << 1; ` `    ``} ` `    ``return` `x; ` `} `   `// Driver code` `int` `main() ` `{ ` `    ``cout << Add(15, 32); ` `    ``return` `0; ` `} `   `// This code is contributed by rathbhupendra`

## C

 `// C Program to add two numbers` `// without using arithmetic operator` `#include`   `int` `Add(``int` `x, ``int` `y)` `{` `    ``// Iterate till there is no carry  ` `    ``while` `(y != 0)` `    ``{` `        ``// carry now contains common ` `        ``//set bits of x and y` `        ``unsigned carry = x & y;  `   `        ``// Sum of bits of x and y where at ` `        ``//least one of the bits is not set` `        ``x = x ^ y; `   `        ``// Carry is shifted by one so that adding` `        ``// it to x gives the required sum` `        ``y = carry << 1;` `    ``}` `    ``return` `x;` `}`   `int` `main()` `{` `    ``printf``(``"%d"``, Add(15, 32));` `    ``return` `0;` `}`

## Java

 `// Java Program to add two numbers` `// without using arithmetic operator` `import` `java.io.*;`   `class` `GFG ` `{` `    ``static` `int` `Add(``int` `x, ``int` `y)` `    ``{` `        ``// Iterate till there is no carry` `        ``while` `(y != ``0``) ` `        ``{` `            ``// carry now contains common` `            ``// set bits of x and y` `            ``int` `carry = x & y;`   `            ``// Sum of bits of x and ` `            ``// y where at least one ` `            ``// of the bits is not set` `            ``x = x ^ y;`   `            ``// Carry is shifted by ` `            ``// one so that adding it ` `            ``// to x gives the required sum` `            ``y = carry << ``1``;` `        ``}` `        ``return` `x;` `    ``}` `    `  `    ``// Driver code` `    ``public` `static` `void` `main(String arg[]) ` `    ``{` `        ``System.out.println(Add(``15``, ``32``));` `    ``}` `}`   `// This code is contributed by Anant Agarwal.`

## Python3

 `# Python3 Program to add two numbers` `# without using arithmetic operator` `def` `Add(x, y):`   `    ``# Iterate till there is no carry ` `    ``while` `(y !``=` `0``):` `    `  `        ``# carry now contains common` `        ``# set bits of x and y` `        ``carry ``=` `x & y`   `        ``# Sum of bits of x and y where at` `        ``# least one of the bits is not set` `        ``x ``=` `x ^ y`   `        ``# Carry is shifted by one so that   ` `        ``# adding it to x gives the required sum` `        ``y ``=` `carry << ``1` `    `  `    ``return` `x`   `print``(Add(``15``, ``32``))`   `# This code is contributed by` `# Smitha Dinesh Semwal`

## C#

 `// C# Program to add two numbers` `// without using arithmetic operator` `using` `System;`   `class` `GFG ` `{` `    ``static` `int` `Add(``int` `x, ``int` `y)` `    ``{` `        ``// Iterate till there is no carry` `        ``while` `(y != 0) ` `        ``{` `            ``// carry now contains common` `            ``// set bits of x and y` `            ``int` `carry = x & y;`   `            ``// Sum of bits of x and ` `            ``// y where at least one ` `            ``// of the bits is not set` `            ``x = x ^ y;`   `            ``// Carry is shifted by ` `            ``// one so that adding it ` `            ``// to x gives the required sum` `            ``y = carry << 1;` `        ``}` `        ``return` `x;` `    ``}` `    `  `    ``// Driver code` `    ``public` `static` `void` `Main() ` `    ``{` `        ``Console.WriteLine(Add(15, 32));` `    ``}` `}`   `// This code is contributed by vt_m.`

## Javascript

 ``

## PHP

 ``

Output

`47`

Time Complexity: O(log y)
Auxiliary Space: O(1)