为了更好地理解,我们始终建议您学习下面列出的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(二进制)
那么 12 和 25 的异或运算结果是 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'。
#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