public class Example023 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
//创建一个输入流扫描器。
System.out.println("请输入一个英文字符串或解密字符串");
String password=sc.nextLine();
//获取用户输入。
char[] array=password.toCharArray();
//将用户输入转换成字符数组。
for(int i=0;i<array.length;i++)
{
array[i]=(char) (array[i]^100000);
//进行异或运算。这个异或运算始终不懂,求详细的通俗易懂的解释。
}
        System.out.println("加密或解密结果如下:");
        System.err.println(new String(array));
}}
array[i]=(char) (array[i]^100000);
//进行异或运算。这个异或运算始终不懂,求详细的通俗易懂的解释。
}Java

解决方案 »

  1.   


    首先明白的是异或是针对二进制位来说的
    相同输出0,不同输出1
    举个简单的例子
           1   ^   1
    00000..1
    00000..1
    输出0000....0 ,结果为0
           2 ^ 1
    00000..10
    00000..01
    输出00000..11,结果为3
      

  2.   

    对于 ^ 是这样的,先将两边的字符或数字之类的转换为二进制,当它们的二进制一致时,就会输出0,否则会将这两个二进制相加再转换为相应的字符或数字输出
      

  3.   

    先转换为二进制 然后位数相同为0 不同为1作为加密来用的话 很重要的一个点 就是 一个数 ^ 两次同一个数 还是原来的数字
    例如 3^5^5  的结果为3!!!
      

  4.   

    本来是朦朦胧胧的,经过大家的解释终于清楚了,谢谢各位了。