布尔运算,位运算,逻辑运算

这篇博客介绍了C语言中的位运算,特别是异或操作如何用于无额外变量交换两个数。它强调了异或自身的特性,并展示了交换过程。此外,还讨论了逻辑运算符!(逻辑非)与取反的区别,通过例子解释了它们在判断相等性时的不同应用。

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

C语言支持按位布尔运算,也就是同样有与,或,取反,异或。

一个数,异或它本身=0。通过异或的这一特点,我们可以不需要第三个值就能将两个值调换。“这种交换方式并没有性能上的优势,它仅仅是一个智力游戏。”——《深入理解计算机系统》

假设一开始有两个数x=a,y=b
y=x⊕y;   >>    y=a⊕b
x=x⊕y;   >>    x=a⊕(a⊕b)=b
y=x⊕y;   >>    y=b⊕(a⊕b)=a

 

C语言还提供了逻辑运算符||(逻辑或)、&&(逻辑与)和!(逻辑非)。逻辑运算认为所有非零的参数都表示真(true,返回表示为1),0表示假(false,返回表示为0)

大部分情况下容易把逻辑非和取反当成一样的,举例说明区别:

X==Y的等价表达式,相等返回1,否则返回0,可以用位运算和逻辑运算实现。

!(X⊕Y)                    像一个表情……

当X=Y的时候,异或之后的结果是0,逻辑非,返回1;当X!=Y的时候,异或之后的结果是个非0值,逻辑非(这个时候如果用的取反,只会把每位取反,达不到返回0的效果),返回0。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值