i = 14,异或算法转换二进制,同则取0异则取1;
异或是一种基于二进制的位运算,用符号XOR或者^表示,其运算法则是对运算符两侧数的每一个进制位同值则取0,异值则取1.
简单理解就是不进位加法,如1+1=0,0+0=0,1+0=1.
For example:
3^5 = 6
转成二进制后就是 0011 ^ 0101 二号位和三号位都是异值取1 末尾两个1同值取零,所以3^5 = 0110 = 6
而 i = 50 ,j = 60;
所以:
i 的二进制 = 00110010
j 的二进制 = 00111100
同位相同取0,不同取1所以得出来的值为00001110
i = i ^ j;所以i = 00001110 = 14
异或运算符
性质
1、交换律
2、结合律(即(a^b)^c == a^(b^c))
3、对于任何数x,都有x^x=0,x^0=x
4、自反性 A XOR B XOR B = A xor 0 = A
异或运算最常见于多项式除法,不过它最重要的性质还是自反性: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面试题的变形:一个数组存放若干整数,一个数出现奇数次,其余数均出现偶数次,找出这个出现奇数次的数?
异或运算(^)都以二进制数据为基础进行的运算。也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1。
例如
int a=4;过程
1、a的值二进制是
0000 0100 //这里去低8位,因为高位都一致。2、b的值二进制是
0000 01103、异或后
0000 0010 //结果是2Java异或运算总结
异或运算是基于二进制的位运算,以符号XOR或^表示。其规则是:若二进制位相同,则结果为0;若二进制位不同,则结果为1。简单理解为不进位加法,例如1+1=0,0+0=0,1+0=0。异或运算具有交换律和结合律,且任何数与0进行异或运算结果不变。其用途广泛,如加密、数据校验、位操作等。例一:在不...
java中异或是怎样算的
解析异或是一种基于二进制的位运算,用符号XOR或者^表示,其运算法则是对运算符两侧数的每一个进制位同值则取0,异值则取1.简单理解就是不进位加法,如1+1=0,0+0=0,1+0=1.For example:3^5 = 6 转成二进制后就是 0011 ^ 0101 二号位和三号位都是异值取1 末尾两个1同值取零,所...
java中异或是怎样算的
异或运算(^)都以二进制数据为基础进行的运算。也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1。例如 int a=4;int b=6;int c = a^b;\/\/c的值是a和b的异...
异或的计算公式是什么?
逻辑加法通常用符号“+”或“∨”来表示。逻辑加法运算规则如下:0+0=0,0∨0=0。0+1=1,0∨1=1。a=a^b;b=a^b;a=a^b;楼主试一下就明白了。问题二:java中异或是怎样算的异或这些位运算都是针对二珐制的。i的二进制为1100j的二进制为111100.110010111100001110=这就是结果了。异或的...
java怎样用异或进行
异或运算(^)都以二进制数据为基础进行的运算。也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1。例如 int a=4;int b=6;int c = a^b;\/\/c的值是a和b的异...
java中的^表示啥
^是异或运算符(把数据转换成二进制,然后按位进行运算)。运算规则:0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0,运算对象相同为0,不同为1.如:3^5 的运算过程为: (1)先将3和5转换成二进制的11和101 (2)再按对应的位分别进行运算,11位数不足补零 011 ^ ...
java中按位异或与逻辑异或的区别
逻辑没有异或运算。位异或指:异或运算^,异或运算它都是以二进制数据为基础进行运算,1^1=00^0=11^0=10^1=1
java中字符串异或的原理
存在按位异或,就是根据数据在内存中的二进制数的存放形式进行异或操作,但是不存在字符串的异或 如果在内存中的数据:01010101和10101010异或,结果就是11111111,然后再将 11111111转换成相应的数据输出结果 注意:Java中没有字符串的异或、与、或、非操作,不是C语言那样(除非是你自己定义异或操作)...
异或怎么计算
问题一:异或操作具体是怎样计算的? 说白了就是相同为假,不同为真 1^1=0 0^0=0 1^0=1 0^1=1 举个例子:有道经典的题�a和b不通过第三个变量来交换值;int a=2,b=5;a=a^b;b=a^b;a=a^b;楼主试一下就明白了。问题二:java中异或是怎样算的 异或这些位运算都是...
java 异或 的 疑问
就是c[i]的二进制值异或'a'的二进制值 相同位变成0,不同位变成1.