Here, we will see how to swap two numbers using a Carbon program. Below are the examples:

**Input : **x = 10, y = 5** ****Output : ** x = 5, y = 10**Input :** x = 1, y = 10 **Output : **x = 10, y = 1

In this we’re going to learn about ** three ways** to swap two numbers in Carbon, and those are mentioned below:

**Using a temp variable.****Without using a temp variable.****Using Bitwise Operator.**

Let’s start discussing each of these methods in detail.

## 1. Using a temp variable

The idea is simple for this approach for swapping two numbers:

- Assign
variable to a*x*variable:*temp**temp = x* - Assign
variable to*y*variable:*x**x = y* - Assign
variable to*temp*variable:*y**y = temp*

Below is the Carbon program to implement the **Swapping with temp variable** approach:

package sample api; fn Main() -> i32 { // using temp variable var x: i32 = 1; var y: i32 = 2; var temp: i32 = x; x = y; y = temp; Print("SWAPPING"); Print("x: {0}", x); Print("y: {0}", y); return 0; }

** Output**:

SWAPPING

x: 2

y: 1

## 2. Without using temp variable

**Approach:**

Simple idea behind this code is to use arithmetic operators. We will take the sum of the two numbers and store it in one number and store the difference of both the numbers in the other number. Finally we will store the difference of both the numbers in the first number. Since the values will be updated after the first two operations we will be able to swap the numbers.

#### Algorithm:

- Assign to
the sum of*y*and*x*i.e.*b**y = x + y.* - Assign to
difference of*x*and*y*i.e.*x*.*x = y – x* - Assign to
the difference of*y*and*y*i.e.*x***y = y – x.**

Below is the Carbon program to implement the ** Swapping without temp variable** approach:

package sample api; fn Main() -> i32 { // without temporary variable var x: i32 = 10; var y: i32 = 2; y = x + y; x = y - x; y = y - x; Print("SWAPPING"); Print("x: {0}", x); Print("y: {0}", y); return 0; }

*Output:*

SWAPPING

x: 2

y: 10

## 3. Using Bitwise Operator

The following approach will be used here:

- Assign to
the*“x”*of*XOR*and*“x”*i.e.*“y”**x = x ^ y.* - Assign to
the*“y”*of*XOR*and*“y”*i.e.*“x”**y = y ^ x.* - Assign to
the difference of*y*and*“y”*i.e.*“x”**x = x ^ y.*

Below is the Carbon program to implement the ** Swapping by Bitwise Operator** approach:

package sample api; fn Main() -> i32 { // using bitwise // operator var x: i32 = 5; var y: i32 = 12; Print("before swapping"); Print("x: {0}", x); Print("y: {0}", y); x = x ^ y; y = y ^ x; // y = b ^ (x ^ y) = x x = y ^ x; // a = (x ^ y) ^ x = y Print("after swapping"); Print("x: {0}", x); Print("y: {0}", y); return 0; }

*Output:*

before swapping

x: 5

y: 12

after swapping

x: 12

y: 5

your comments are appreciated and if you wants to see your articles on this platform then please shoot a mail at this address *kusingh@programmingeeksclub.com*

Thanks for reading 🙂