Write a c program to subtract two numbers without using subtraction operator






Write a c program or code to subtract two numbers without using subtraction operator


#include<stdio.h>

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

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

    sum = a + ~b + 1;

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

    return 0;
}

Sample Output:

Enter any two integers: 5 4
Difference of two integers: 1





17 comments:

Anonymous said...

write a c program to display all even factors of a given number using function in c

Anonymous said...

can u give me a program in c to calculate the series 1+4+25+........+n using double loops

aaaa said...

how is it possible solution of above example question
sum=a+~b+1

Koushik Ahmed said...

I don't understand.

Unknown said...
This comment has been removed by the author.
Unknown said...

what is ~?

rahul said...

~ is complement operator.
if a=8 then a=1000(in binary form)
and when we take ~a it becomes=0111(interchange 0's and1's)
now 0001=7
in the above example we have to do (a-b)
a-b= a+(-b)
=a+(~b+1)=a+~b+1

Mukul Bahuguna said...

but a & b are integers, how does it convert them to binary form, calculate 2's compliment and return result back in int form???

Mukul Bahuguna said...

but a & b are integers, how does it convert them to binary form, calculate 2's compliment and return result back in int form???

Hariom Gupta said...

#include

int main(){

int a,b,i;


printf("Enter any two integers: ");
scanf("%d%d",&a,&b);
for( i=0;i<b;i++)
{
a--;
}

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

return 0;
}

Hariom Gupta said...

#include

int main(){

int a,b,i;


printf("Enter any two integers: ");
scanf("%d%d",&a,&b);
for( i=0;i<b;i++)
{
a--;
}

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

return 0;
}

prudhvi said...

Why did we write int on the line 1 (i.e.,into main())

prudhvi said...

Why did we write int on the line 1 (i.e.,into main())

alok said...

will it work for a=10,b=5
coz binary value of a=1010,b=101,~b=010
so sum=1010+010+1
=1101 which 13 in decimal

Unknown said...

i think that is wrong ..it should be a+~b-1

Idrisi said...

but we don't have to use '-' operator marwa

robinhood said...

int a=16,b=2,c;
c=a+~b+1;
convert in binaray a,b;
a=16=00010000;
b=2=00000010;
~b=11111101;
c=a+~b+1
a=00010000
+
~b=11111101;
-------------------
1110 1101
+ 0000 0001
-----------------------
1 110 only considerd lSB 4 bit rest BIT discarded
c=1110=(14)
i hope clear the point