C语言里的按位异或运算符

C语言 中^为按位 异或运算 符,若两个二进制位相同,则结果为0,不同为1

#include "stdio.h"
main()
{
int a=6,b=10,c;
c=a^b;
printf("%d",c);
}
函数 输出结果为12

将6和10分别转换为2进制数为0110(前边补了个0)和1010。然后按照定义进行 异或运算

0110 a
1010 b
1100 a和b最左边第一位和第二位不相同,所以分别为1,第三位和第四位相同,所以分别为0

二进制数1100转换为10进制数,结果是12。


异或:若参加运算的两个二进制位同号,则结果为0;异号则为1.即 0异或0=0,1异或0=1,1异或1=0.
应用:
1.使特定位翻转。假设有01111010,想使其低4位翻转。可以将它与00001111进行异或运算。结果为01110101
2.与0异或,保留原值。如012异或00=012.
3.交换两个值,不用临时变量。假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:
a=a异或b;
b=b异或a;
a=a异或b;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值