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

c语言的按位异或运算符是啥意思啊,做什么用的啊,谢谢
2024-11-06 09:46:20
推荐回答(5个)
回答(1):

按位异或,其操作符为^,形式为
a^b
计算时,根据操作数a和b每位的值,计算结果,当a,b的对应位上值相同时,结果的该位上值为0,否则值为1。

char a = 0x12, b = 0x34;
a^b
= 0x12 ^ 0x34
= B0001 0010 ^ B0011 0100
= B0010 0110
=0x26

扩展资料:

异或,英文为exclusive OR,缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。

参考资料:异或百度百科

回答(2):

第一、C语言中异或运算符为^,顾名思义就是不同为1,相同为0;具体就是0^0等于0,1^1等于0,0^1等于1,1^0等于1;

第二、异或运算的用途:First:可以是使一个数中的某些特定位进行翻转;例如对整数10100001(即整数161在进行位运算过程中,是以补码的形式操作的)中的第1位和第3位进行翻转(最低位【即权值最小,即最右侧】),用00000111与其做异或运算即可;Second:可以实现两个值的交换,而不需要借助temp,如 int a=12,b=161; a=a^b;b=b^a;a=a^b;进行操作后,a=161,b=12;Third:a=a^b^b;进行这波操作后a还是原来的a;
第三、谢谢各位看官,初来乍到,多多支持(点赞)

回答(3):

1:“按位与”运算符(&)用法是如果两个相应的二进制位都为1,则该位的结果值为1否则为0。0&0=0,1&0=0,1&1=1
2:“按位或”运算符(|)用法是如果两个相应的二进制位有一个为1,则该位的结果值为1否则为0。0&0=0,1&0=0,1&1=1
0,1&0=1,1&1=1
3:“异或”运算符(^)用法是如果两个相应的二进制位为同号,则该位的结果值为1否则为0。0&0=1,1&0=0,1&1=1

回答(4):

1:“按位与”运算符(&)全1为1,有0则0。0&0=0,1&0=0,1&1=1
2:“按位或”运算符(|)有1则1,全0则0。0|0=0,1|0=1, 1|1=1
3:“异或”运算符(^)相同为0,不同为1。0^0=0,1^0=1,1^1=0

回答(5):

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。