「java怎么用异或」java中的异或
本篇文章给大家谈谈java怎么用异或,以及java中的异或对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中异或是怎样算的
- 2、java中字符串异或的原理
- 3、java 异或 字符串找不同 是怎么实现的??
- 4、java中的(或运算,异或运算,与运算)解释下
- 5、java位异或
- 6、java异或运算
java中异或是怎样算的
概述
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面试题的变形:一个数组存放若干整数,一个数出现奇数次,其余数均出现偶数次,找出这个出现奇数次的数?
java中字符串异或的原理
存在按位异或,就是根据数据在内存中的二进制数的存放形式进行异或操作,
但是不存在字符串的异或
如果在内存中的数据:01010101和10101010异或,结果就是11111111,然后再将
11111111转换成相应的数据输出结果
注意:Java中没有字符串的异或、与、或、非操作,不是C语言那样(除非是你自己定义异或操作)
java 异或 字符串找不同 是怎么实现的??
函数是运用了异或运算的特点,当两次异或同一字符的时候,他们的结果就相互抵消(等同于没有异或),所以严格说来,这个函数并不能判断两个字符串是否完全相同。他只是判断把这两个字符串,的所有字符全部统计一遍以后,是不是所有的字母都出现偶数次。如果是函数就返回0,否则就返回非0。
java中的(或运算,异或运算,与运算)解释下
java中或运算、异或运算、与运算的使用实例和解释如下:
public class Test { public static void main(String[] args) {
// 1、左移( )
// 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:
// // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20 System.out.println(5 2);// 运行结果是20
// 2、右移( ) 高位补符号位
// 0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:
// 0000 0000 0000 0000 0000 0000 0000 0001
System.out.println(5 2);// 运行结果是1
// 3、无符号右移( ) 高位补0
// 例如 -5换算成二进制后为:0101 取反加1为1011
// 1111 1111 1111 1111 1111 1111 1111 1011 /
/ 我们分别对5进行右移3位、 -5进行右移3位和无符号右移3位:
System.out.println(5 3);// 结果是0
System.out.println(-5 3);// 结果是-1
System.out.println(-5 3);// 结果是536870911
// 4、位与( )
// 位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0
System.out.println(5 3);// 结果为1
System.out.println(4 1);// 结果为0
// 5、位或( | )
// 第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0
System.out.println(5 | 3);// 结果为7
// 6、位异或( ^ )
// 第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n为也为1,否则为0
System.out.println(5 ^ 3);//结果为6
// 7、位非( ~ ) // 操作数的第n位为1,那么结果的第n位为0,反之。 System.out.println(~5);// 结果为-6 } }
java位异或
第一个图要表达的是的意思,是逻辑与,两边的条件都是TRUE ,则整个表达式为TRUE。但是计算方向是先左后右,如果左边表部分已经FALSE,那么右边部分不用计算,所以后面那一半 x=6的赋值语句就没执行。但是是一个位运算符号,表达式里面都要计算。
第二个图,异或就是同位变,1和1异或得0。0和0异或得0,1和0异或得1。A的位可能是1001,某个字可能是1110,异或结果就是0111。那他再异或1001 ,得到1110。所以就是加密解密了。
java异或运算
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;
java怎么用异或的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java中的异或、java怎么用异或的信息别忘了在本站进行查找喔。
发布于:2022-11-23,除非注明,否则均为
原创文章,转载请注明出处。