相同之处:i ^= (j ^= (i ^= j)); java和C都是这个执行顺序;
不同之处:
java:执行完第一个(i ^= j)的时候,最左边的i的值还是1而不会是(i ^= j)的值
C:执行完第一个(i ^= j)的时候,最左边(第一个)i的值是(i ^= j)
你的程序改成这样就可以了:
j ^= i ^= j;
i ^= j;
或
i =i^j;
j=i^j;
i=i^j;
1、异或(xor)是一个数学运算符。它应用于逻辑运算。
2、异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
3、如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
4、逻辑异或运算简称异或。英文为exclusive OR,或缩写成xor。
5、异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。
扩展资料
一、运算法则
1、a ⊕ a = 0
2、a ⊕ b = b ⊕ a
3、a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
4、d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c
5、a ⊕ b ⊕ a = b
二、逻辑表达式:F=AB’⊕A’B((AB’⊕A’B)’=AB⊙A’B’,⊙为“同或”运算)
参考资料:
将每个字节左移拼成8个字节 第一个左移56 第二个48。。。
0x30 0x31 0x39 0x39 0x39 0x39 0x39 0x39
0011 0000 0011 0001 0011 1001 0011 1001 0011 1001 0011 1001 0011 1001 0011 1001 。。。
然后将3个8字节异或 最后右移还原存在按位异或,就是根据数据在内存中的二进制数的存放形式进行异或 *** 作,
但是不存在字符串的异或
如果在内存中的数据:01010101和10101010异或,结果就是11111111,然后再将
11111111转换成相应的数据输出结果
注意:Java中没有字符串的异或、与、或、非 *** 作,不是C语言那样(除非是你自己定义异或 *** 作)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)