c语言按位异或什么意思?

Python014

c语言按位异或什么意思?,第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

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

位运算符有:&(按位与)、|(按位或)、^(按位异或)、~

(按位取反)。

优先级从高到低,依次为~、&、^、|

按位与运算有两种典型用法,一是取一个位串信息的某几位,如以下代码截取x的最低7位:x

&

0177。二是让某变量保留某几位,其余位置0,如以下代码让x只保留最低6位:x

=

x

&

077。

按位或运算的典型用法是将一个位串信息的某几位置为1。如将要获得最右4位为1,其他位与变量j原来其他位保持相同,可用逻辑或运算017|j;

按位异或运算的典型用法是求一个位串信息的某几位信息的反。如欲求整型变量j的最右4位信息的反,用逻辑异或运算017^j,就能求得j最右4位的信息的反,即原来为1的位,结果是0,原来为0的位,结果是1。

交换两个值,不用临时变量,假如a=3,b=4。想将a和b的值互换,可以用以下赋值语句实现:

a=a^b

b=b^a

a=a^b

取反运算常用来生成与系统实现无关的常数。如要将变量x最低6位置成0,其余位不变,可用代码x

=

x

&

~077实现。