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