异或的意思就是相异为真。。
现在问题主要是出现在这一句。。
b[--i]=a[j]^a[--j];
注意啦。。编译器编译的时候是从后向前的。。也就是先算a[--j],这样j就先自减了。。j从3变为2。。然后再算a[j],因为j是2,调用的时候,就是调a[2]
所以整个语句第一次执行的时候就是b[2]=a[2]^a[2],结果显然是0;
所以输出的是1100
#include
void main()
{
int a=15;
int b=6;
int c = a^b;
printf("%d",c);
}
直接用异或符号^,得到的是数字9,因为设置输出是%d
异或运算相当于不进位的加法运算,就是相同的变0,不同的变1,
举个例子
1 0 1 1 1 1 0 0
^ 0 1 1 0 1 0 0 1
= 1 1 0 1 0 1 0 1
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。
异或略称为XOR、EOR、EX-OR
程序中有三种演算子:XOR、xor、⊕。
使用方法如下
z = x ⊕ y
z = x xor y