Java实现两个变量的互换(不借助第三个变量);加密应用

    xiaoxiao2022-07-12  148

    基本异或公式:

    A^B=B^A; (A^B)^A=A^(B^A)=B; (A^B)^A=A^(A^B)=B;

    1.通过位运算中的异或运算符(^)实现两个变量的互换。

    代码如下:

    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); } }

    结果如下:

    2.异或的应用——加密也可以这样简单~

    利用位运算对通信信息进行编码,即将明文转换成密文发送给接收方,而接收方再通过相应的运算将密文编译成明文,就完成了重要信息的传递。

    例:

    在某次战争中,假设总指挥部要给前线部队发送信息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]); } } }

    结果如下:

    最新回复(0)