首页 > 其他 > 详细

巧用异或实现变量互换和加密

时间:2014-02-08 15:30:22      阅读:410      评论:0      收藏:0      [点我收藏+]

在博文中http://www.cnblogs.com/cysolo/p/3539210.html看到不借助第三个变量实现变量互换。

代码如下:

bubuko.com,布布扣
 1 import java.util.Scanner;
 2 
 3 public class VariableExchange {
 4     public static void main(String[] args){
 5         System.out.println("请输入变量A的值");
 6         Scanner scanner=new Scanner(System.in);
 7         long A=scanner.nextLong();
 8         System.out.println("请输入变量B的值");
 9         Scanner scannerB=new Scanner(System.in);
10         long B=scannerB.nextLong();
11         System.out.println("A="+A+"\t"+"B="+B);
12         System.out.println("执行变量互换...");
13         A=A^B;
14         B=B^A;
15         A=A^B;
16         System.out.println("A="+A+"\t"+"B="+B);
17     }
18 }
View Code

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

其原理:

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:
1 Scanner sc = new Scanner(System.in);
2 int i = sc.nextInt();

例2:

1 Scanner sc = new Scanner(new File("myNumbers"));
2 while (sc.hasNextLong()) {
3       long aLong = sc.nextLong();
4 }

详细用法查看api文档。

巧用异或实现变量互换和加密

原文:http://www.cnblogs.com/harry881100/p/3540117.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!