使用位异或操作交换两个数字的 C 语言程序


2022年2月23日, Learn eTutorial
1398

为了更好地理解,我们始终建议您学习下面列出的C语言编程基础主题

C 语言中的位运算符是什么?

在这个 C 语言程序中,我们使用**位异或**运算符来交换数字。在此之前,我们需要了解位运算符。位运算符在字节级别工作,字节是可寻址内存的基本单位。主要的位运算符是位**与**、**或**和**非**运算符。这里我们使用位**异或**,它被称为**异或**。**异或**接受两个输入,如果其中一个输入为一,则返回一。如果两个输入都是一或零,则返回零。

位运算符如何帮助交换数字?

设 'x' 为 10,'y' 为 5,那么二进制表示中 'x' 为 (1010),'y' 为 (0101)。然后我们使用 'x = x ^ y',现在 'x' 变为 15 (1111)。现在我们应用 y = x ^ y,然后 'y' 变为 10 (1010)。最后,我们应用 x = x ^ y 使 'x' 变为 5 (0101)。如果两个操作数的对应位相反,则位异或运算符的结果为一。如果两个操作数的对应位相同,则异或运算符的结果为 0。让我们看一个简单的例子来了解更多。

10 - 1010(二进制)

13 - 1101(二进制)

那么 1225 的异或运算结果是 0111 0111 - 7(十进制)。

这个程序的逻辑是首先声明两个变量 'i' 和 'j'。然后从用户那里接收整数并显示它们。然后使用异或运算符交换数字。最后使用 printf 函数显示数字。

算法

步骤 1: 包含头文件以在 C 程序中使用内置函数。

步骤 2: 声明变量 'i, k' 为整数。

步骤 3: 从用户读取两个整数并将它们存储到变量 'i' 和 'k' 中。

步骤 4: 使用 printf 函数显示交换前的整数。

步骤 5: 交换数字,例如 'i = i^k'、'k = i^k' 和 'i = i^k'。

步骤 6: 显示交换后的数字 'i' 和 'k'。

C 语言源代码

                                          #include <stdio.h>

void main() {
  long i, k;
  printf("Enter two integers\n");
  scanf("%ld %ld", & i, & k);
  printf("\nBefore swapping i= %ld and k = %ld", i, k);
  i = i ^ k; /* swap the numbers as we discussed in the logic part */
  k = i ^ k;
  i = i ^ k;
  printf("\nAfter swapping i= %ld and k = %ld", i, k); /* prints the swapped numbers */
}
                                      

输出

Enter two integers
12
13
Before swapping i= 12 and k = 13
After swapping i= 13 and k = 12