您的位置:

java字节异或,java利用异或运算的性质,对几个字符

本文目录一览:

java中字符串异或的原理

存在按位异或,就是根据数据在内存中的二进制数的存放形式进行异或操作,

但是不存在字符串的异或

如果在内存中的数据:01010101和10101010异或,结果就是11111111,然后再将

11111111转换成相应的数据输出结果

注意:Java中没有字符串的异或、与、或、非操作,不是C语言那样(除非是你自己定义异或操作)

java中6异或3是多少

5。

^异或运算符(当两个数字不同时为1,其余为0)6的二进制000001103的二进制00000011所以6^3=00000101答案是5。

java中求16进制异或和

public class Test {

public String a;

public static void main(String[] args) {

int[] a = new int[] { (int) 0X8A, (int) 0X12, (int) 0X05,

(int) 0X07, (int) 0XFE, (int) 0XE3, (int) 0X0A,

(int) 0X06, (int) 0X10, (int) 0X14, (int) 0X29 };

int ChkSum = 0;

for (int i = 0; i 2 ; i++) {//a.length,只有在为2时结果为98,也就是说只验证了0X8A,0X12这2个数

ChkSum = (int) (ChkSum ^ a[i]);

}

System.out.println(Integer.toHexString(ChkSum)+"H");

}

}

N的输入我就不写了,自己给了一个固定值2,你把 i2中的2替换成 输入值就好

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的异或运算,求助!

提供思路

将每个字节左移拼成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字节异或 最后右移还原