基本异或公式:
A^B=B^A; (A^B)^A=A^(B^A)=B; (A^B)^A=A^(A^B)=B;代码如下:
class Switch { public static void main(String[] args) { int A=12,B=15; System.out.println("交换前:A:"+A+" B:"+B); A=A^B; B=B^A; A=A^B; System.out.println("交换后:A:"+A+" B:"+B); } }结果如下:
利用位运算对通信信息进行编码,即将明文转换成密文发送给接收方,而接收方再通过相应的运算将密文编译成明文,就完成了重要信息的传递。
例:
在某次战争中,假设总指挥部要给前线部队发送信息FIRING,但需加密后才能发出,双方约定用99作为加密字符串。总指挥部发出的密文是什么样的?前线部队收到密文后如何解密?
过程如下:
①总指挥部:FIRING逐字母与99异或,得到密文,进行发送;
②前线部队:用密文与99异或,得到正确信息。
代码如下:
//文件名:Encryp //功能:通过异或实现加密解密 class Encryp { public static void main(String[] args) { //总指挥对明文加密 String s="FIRING";//明文 System.out.println("原文内容:"+s); int ss=99; char[] array=s.toCharArray(); System.out.print("传送密文:"); for(int i =0;i<array.length;i++) { array[i]=(char)(array[i]^ss); System.out.print(array[i]); } //前线部队解读密文 System.out.print("\n"+"解密后的内容:"); char[] mm=new char[array.length]; for(int i =0;i<mm.length;i++) { mm[i]=(char)(array[i]^ss); System.out.print(mm[i]); } } }结果如下: