异或(xor)的讲解和使用方法

本文通过两个日常对话实例,详细解释了逻辑运算中的“或”(OR)与“异或”(XOR)的区别。并进一步介绍了异或逻辑操作的真值表及其在二进制上的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例演示“OR”和“XOR”的区别:


第一段:

小A:这个系统当你按下紧急按钮 或者 房间有大量烟雾发生的时候,警报就会响起
小B:这个"或者"是排他性吗?
小A:什么意思?
小B:就是当你按下紧急按钮并且房间有大量烟雾发生的时候,警报会响起吗?
小A:当然会啦!


第二段:

小A:现在C博士应该在北京 或者 上海开讲座。
小B:这个"或者"是排他性吗?
小A:你在说什么?
小B :就是C 博士可能在北京 又在 上海吗?
小A:当然不会啦! 


显然,这两段对话中的“或者”代表的意思并不相同。
第一个“或者”并不排他,也就是普通或者 or 
第二个“或者”是排他的,也就是我们说的异或 xor 

下面有个异或逻辑操作的真值表:

在这里插入图片描述

A B有一个为真 但不同时为真” 的运算称作异或,或者可以理解成相同时结果为0,不同是结果为1

我们发现当数字相同的时候,结果为0,数字不同的时候,结果为1.
那么除了0 和 1 其他的数字呢,5 xor 6 结果为3

异或是基于二进制基础上按位异或的结果 5 ^ 6 的过程 其实是将5和6分别转换为二进制:
5 = 0101(b)
6 = 0110(b)
进行异或就是0011(b),即为3.


那今天就到这里啦,感谢您的支持

下期再见吧(◕ᴗ◕✿)

### C语言异或运算的概念 在C语言中,异或XOR)是一种逻辑运算符,用于执行按位比较两个操作数。当且仅当两个相应的二进制位不同时,该位置的结果才为1;如果相同,则结果为0。这种特性使得异或运算具有广泛的应用场景。 #### 数学符号与计算机表示 - **数学符号**:“⊕” - **计算机符号**:“^” 具体来说,对于任意两位AB: | A | B | 结果 | |---|---|------| | 0 | 0 | 0 | | 0 | 1 | 1 | | 1 | 0 | 1 | | 1 | 1 | 0 | 表展示了不同情况下两者的组合及其对应的输出值[^2]。 ### 实际应用案例分析 考虑如下代码片段来理解如何利用`^`实现简单的加密解密功能: ```c #include <stdio.h> int main() { int key = 7; char message[] = "hello"; printf("Original Message: %s\n", message); // 加密过程 for (size_t i = 0; message[i]; ++i) { message[i] ^= key; } printf("Encrypted Message: "); for (size_t i = 0; message[i]; ++i){ putchar(message[i]); } puts(""); // 解密过程(再次使用相同的key) for (size_t i = 0; message[i]; ++i) { message[i] ^= key; } printf("Decrypted Message: %s\n", message); } ``` 上述程序通过将字符串中的每一个字符与其后的整数值相异或完成加/解密转换。由于两次连续的同一位上施加同样的异或操作会恢复原始状态,因此可以轻松地对消息进行编码并随后解码回原样[^1]。 ### 常见用途总结 除了基本的数据处理外,异或还经常被用来交换变量而无需额外空间、检测奇偶校验以及构建高效的哈希函数等复杂任务中。此外,在某些特定条件下还可以作为条件判断语句的一部分简化表达式结构[^3]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值