欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java使用异或实现变量互换和异或加密解密示例

程序员文章站 2024-02-23 23:09:18
复制代码 代码如下:import java.util.scanner; public class variableexchange {   ...

复制代码 代码如下:

import java.util.scanner;

public class variableexchange {
    public static void main(string[] args){
        system.out.println("请输入变量a的值");
        scanner scanner=new scanner(system.in);
        long a=scanner.nextlong();
        system.out.println("请输入变量b的值");
        scanner scannerb=new scanner(system.in);
        long b=scannerb.nextlong();
        system.out.println("a="+a+"\t"+"b="+b);
        system.out.println("执行变量互换...");
        a=a^b;
        b=b^a;
        a=a^b;
        system.out.println("a="+a+"\t"+"b="+b);
    }
}

其实现是巧用了异或运算。

其原理:

复制代码 代码如下:

a = a ^ b;
b = b ^ a;
a = a ^ b;

复制代码 代码如下:

a1=a^b
b=a1^b=(a^b)^b=a
a=a1^b =a1^(a1^b)=a1^a1^b=b

同一变量与另一变量和其异或值异或等于自身。

该原理同样可运用于加密。将其值与key进行异或得到加密后的串,解密操作也只需与key再异或一次。

补充:
scanner类:
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
例1:

复制代码 代码如下:

scanner sc = new scanner(system.in);
int i = sc.nextint();

例2:

复制代码 代码如下:

scanner sc = new scanner(new file("mynumbers"));
 while (sc.hasnextlong()) {
       long along = sc.nextlong();
}