用java写一个字符串异或的程序

用java写一个字符串异或的程序,第1张

private String twoStringXor(String str1, String str2) {

byte b1[] = 羡唯str1.getBytes()

byte b2[] = str2.getBytes()

byte longbytes[],shortbytes[]

if(b1.length>=b2.length){

longbytes = b1

shortbytes = b2

}else{

longbytes = b2

shortbytes = b1

}

byte xorstr[] = new byte[longbytes.length]

int i 猛派闷= 0

for ( i < shortbytes.length i++) {

xorstr[i] = 枝弯(byte)(shortbytes[i]^longbytes[i])

}

for (i<longbytes.lengthi++){

xorstr[i] = longbytes[i]

}

return new String(xorstr)

}

异或运算(^)都以二进制数据为基础进行的猛枣指运算。也就是说当代码中使用到异或运算枝配时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个岩禅是1)为1。

例如

int a=4

int b=6

int c = a^b//c的值是a和b的异或。值为2.

过程

1、a的值二进制是

0000 0100 //这里去低8位,因为高位都一致。

2、b的值二进制是

0000 0110

3、异或后

0000 0010 //结果是2

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12384885.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存