Write a c program to add two numbers without using addition operator






Add two numbers in c without using operator

How to add two numbers without using the plus operator in c

#include<stdio.h>

int main(){
   
    int a,b;
    int sum;

    printf("Enter any two integers: ");
    scanf("%d%d",&a,&b);

    //sum = a - (-b);
    sum = a - ~b -1;

    printf("Sum of two integers: %d",sum);

    return 0;
}



Sample output:

Enter any two integers: 5 10

Sum of two integers: 15


Algorithm:

In c ~ is 1's complement operator. This is equivalent to:  
~a = -b + 1
So, a - ~b -1
= a-(-b + 1) + 1
= a + b – 1 + 1
= a + b





25 comments:

mohit said...

sir (~) tiled use karne se two number add kyun hue...kya aap xplain kr sakte h...

ankur patel said...

@mohit
a+b=a-(-b)
but we know -b=(~b+1)
so
a+b=a - (~b+1)
a+b= a - ~b - 1

Anonymous said...

I m just getting crazy in making c problems and i have completed all my assignments and problems that i had in handouts or pdf's and now i got this site as a helping tool to improve my skill to professional level..... Thankx man.. for giving us problems.... :) mean c problems.... ;)

Hanish Maghu said...

here is a simple logic...adding a and b..say a=5 b=4 so a+b=5+4=9

int main(void)
{
int a=5,b=4;// you can input those nos from user...
while(b)
{
a++;
b--;
}
printf("%d",a);
}

Anonymous said...

still not clear with '~'...

Anonymous said...

~b = -(b+1)
so a-(~b)-1 = a-(-(b+1))-1
= a+b+1-1
= a+b

Anand Barnwal said...

'~' is a type of bitwise operator.
This simply means one's complement.
Bitwise operators can only be operated upon ints & chars.
On taking the one's complement of a number, all the 1's are changed to 0's and vice-versa.
e.g: one's complement of 5 (0101) is -6 (1010).

Anand Barnwal said...

This code doesn't use any arithmetic operators to add two numbers.

main()
{
int num1, num2;
scanf("%d %d",num1, num2);
printf("%d", Add(num1, num2));
}

int Add(int x, int y)
{
if (y == 0)
return x;
else
return Add( x ^ y, (x & y) << 1);
}

prashant said...

please write explanation also. . .

Mukilan said...

while (num2) // do until carry
{
int carry = num1 & num2 // if its 1 & 1 we get carry
num1 = num1 ^ num2; // add all 0 +1 = 1
num2 = carry << 1; // now we need to carry
}
return num1

Mukilan said...

while (num2) // do until carry
{
int carry = num1 & num2 // if its 1 & 1 we get carry
num1 = num1 ^ num2; // add all 0 +1 = 1
num2 = carry << 1; // now we need to carry
}
return num1

Mukilan said...

while (num2) // do until carry
{
int carry = num1 & num2 // if its 1 & 1 we get carry
num1 = num1 ^ num2; // add all 0 +1 = 1
num2 = carry << 1; // now we need to carry
}
return num1

Anonymous said...

BH JUYHC

Anonymous said...

i cant understand

Anonymous said...

plz also share the problem for multiplication with out using * operator!!!

Yihuan Huang said...

Here is a slight modification that adds subtraction feature as well:

/* Adds two signed integers. Does a subtract when cin = 1 */
int adder(int a, int b, int cin)
{
if (cin) b = ~b;
int carry = (a & b) << 1 | cin;
a ^= b;
b = carry;

while (b) {
carry = (a & b) << 1;
a ^= b;
b = carry;
}

return a;
}

Anonymous said...

you can as well use ^ operator.
a^b will give you its sum.

joginder Banger said...

Good thing boss

Asrith Namgari Reddy said...

nice one

Vikram Mp said...

void main()
{
int a=10,b=10,c;
clrscr();
c=a- -b;
printf("%d",c);
}

manan singla said...

You have used "+" operator (A++ which is A = A + 1) which is forbidden in the question itself.

Nancy Ncit said...

The mission of NCITSolutions is to provide viable, low cost outsourcing solutions. We offer you offshore services tailor made to suit your distinctive requirements. Our low cost IT solutions afford you a competitive edge while delivering tangible results. With a software team whose core competencies range from software design to graphic design, we are equipped to process all your IT needs as we operate on a vast gamut of systems such as: Linux, UNIX, Windows, iOS and Android.

NCITSolutions is an independent and unique organization that was created with the objective of facilitating offshore/outsourcing services to enable clients to benefit from potential business opportunities made available through the creation of free and fair markets in the Middle East region.

We offer:
• Individual outsourcing facilities uniquely tailored for each customer.
• Identification of available market resources and potential partners
• On-the-ground management and support in Jordan
• Legal, technical and cultural support for ventures.
Numerous global companies have set up offices in Amman- Jordan in a bid to promote partnerships and joint ventures with Middle East companies. NCITSolutions maintains a physical presence with staff on the ground in Amman- Jordan. We can also provide businesses with space and easy access to our business support services through our affiliate in Amman Jordan.

Visit us at ncitsolutions.com or contact us at 919-324-6505

Nancy Ncit said...

The mission of NCITSolutions is to provide viable, low cost outsourcing solutions. We offer you offshore services tailor made to suit your distinctive requirements. Our low cost IT solutions afford you a competitive edge while delivering tangible results. With a software team whose core competencies range from software design to graphic design, we are equipped to process all your IT needs as we operate on a vast gamut of systems such as: Linux, UNIX, Windows, iOS and Android.

NCITSolutions is an independent and unique organization that was created with the objective of facilitating offshore/outsourcing services to enable clients to benefit from potential business opportunities made available through the creation of free and fair markets in the Middle East region.

We offer:
• Individual outsourcing facilities uniquely tailored for each customer.
• Identification of available market resources and potential partners
• On-the-ground management and support in Jordan
• Legal, technical and cultural support for ventures.
Numerous global companies have set up offices in Amman- Jordan in a bid to promote partnerships and joint ventures with Middle East companies. NCITSolutions maintains a physical presence with staff on the ground in Amman- Jordan. We can also provide businesses with space and easy access to our business support services through our affiliate in Amman Jordan.

Visit us at ncitsolutions.com or contact us at 919-324-6505

Roopam Gupta said...

Simply we can do it as:
#include

int main(){

int a,b;


printf("Enter any two integers: ");
scanf("%d%d",&a,&b);

for(int i=0;i<b;i++)
{
a++;
}

printf("Sum of two integers: %d",a);

return 0;
}

suraj kumar said...

+ is different and ++ is different... question says without using addition operator.. ++ is not addition operator. so the solution is correct. :)