C Sharp Program to subtract 2 numbers without using arithmetic operators.

Subtract 2 numbers without using arithmetic operators – Learn how to subtract 1 from a given input number and also learn how to subtract 2 given input numbers with example programs.

To subtract 1 from a number x, set all the the bits to 1 after the rightmost 1 bit.
finally unset the right most bit to get the answer.

x=6
x=00110 in binary

here right most 1 bit is in second position.
set all the bits to 1 after rightmost  1 bit(second position bit) , then binary string is 00111.
finally unset the right most bit 1(second position ) to zero.
00101

Program to subtract one from a given number.

c# code

using System;
    class Program
    {
        static void Main(string[] args)
        {
            int x = 6;
            int y = 1;
            int Num1=x,Num2=y;
             //set all the bits to 1 after the right most 1 bit.
 
            while(!((x&y)>0))
            {
                x = x ^ y;
                y = y << 1;
            }
           //unset the right most 1 bit zero

            x = x ^ y;
            Console.WriteLine("subtract {0}- {1} = {2}" ,Num1,Num2,x);
        }
    }

Output

subtract 6- 1 = 5

 

We can subtract 2 numbers using half sub-tractor logic.

Half subs-tractor
diff=x^y
borrow=(~x).y

The below program is based on the above formulas.

Program to subtract 2 numbers without using arithmetic operators.

c# code

using System;
class Program
    {
        static void Main()
        {
            int y = 10;
            int x = 21;
            int Num1=x,Num2=y;
            int borrow = 0;
              //loop till there is no carry
            while (y != 0)
            {
                //borrow contains set bits of y and unset bits of x
                borrow = (~x) & y;
                //subtraction of bits of x and y where atleast one of the bits not set
                x = x ^ y;
                //borrow is shifted by one 
                //so that subtracting it from 
                //x gives the required sum

                y = borrow << 1;
            }
            Console.WriteLine("subtract {0}- {1} =  {2}" ,Num1,Num2,x);
        }
    }

Output

subtract 21- 10 = 11