异或运算(^)都以二进制数据为基础进行的运算.也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算.异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1.
例如
过程
①.、a的值二进制是
0000 0110
byte?b1[]?=?str1.getBytes();
byte?longbytes[],shortbytes[];
longbytes?=?b1;
}else{
shortbytes?=?b1;
}
byte?xorstr[]?=?new?byte[longbytes.length];
int?i?=?0;
for?(;?i?shortbytes.length;?i++)?{
xorstr[i]?=?(byte)(shortbytes[i]^longbytes[i]);
for?(;ilongbytes.length;i++){
xorstr[i]?=?longbytes[i];
return?new?String(xorstr);
int?c?=?a^b;
System.out.println("异或?="?+?Integer.toBinaryString(c));
System.out.println("即??="?+?c);
异或 ? ?=11111111111111111111111111000011
原码为1000...111101
java和c的执行是不一致的
相同之处: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;
概述
解析
异或是一种基于二进制的位运算,用符号XOR或者^表示,其运算法则是对运算符两侧数的每一个进制位同值则取0,异值则取1.
简单理解就是不进位加法,如1+1=0,0+0=0,1+0=1.
For example:
所以:
i 的二进制 = 00110010
j 的二进制 = 00111100
同位相同取0,不同取1所以得出来的值为00001110
拓展内容
异或运算符
性质
①.、交换律?
异或运算最常见于多项式除法,不过它最重要的性质还是自反性:A XOR B XOR B = A,即对给定的数A,用同样的运算因子(B)作两次异或运算后仍得到A本身.这是一个神奇的性质,利用这个性质,可以获得许多有趣的应用. 例如,所有的程序教科书都会向初学者指出,要交换两个变量的值,必须要引入一个中间变量.但如果使用异或,就可以节约一个变量的存储空间: 设有A,B两个变量,存储的值分别为a,b,则以下三行表达式将互换他们的值 表达式 (值) :?
A=A XOR B (a XOR b)?
B=B XOR A (b XOR a XOR b = a)?
A=A XOR B (a XOR b XOR a = b)
#code:
google面试题的变形:一个数组存放若干整数,一个数出现奇数次,其余数均出现偶数次,找出这个出现奇数次的数?
以上就是土嘎嘎小编为大家整理的java代码怎么写异或相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!