关于java异或运算符的,始终不懂,求解释,谢谢。

a1143934776 2013-05-20 10:01:01
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);
//进行异或运算。这个异或运算始终不懂,求详细的通俗易懂的解释。
}
...全文
799 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tonyzbx 2015-04-01
  • 打赏
  • 举报
回复
一句话,相异为真。
a1143934776 2013-05-21
  • 打赏
  • 举报
回复
本来是朦朦胧胧的,经过大家的解释终于清楚了,谢谢各位了。
wandefajin 2013-05-20
  • 打赏
  • 举报
回复
先转换为二进制 然后位数相同为0 不同为1 作为加密来用的话 很重要的一个点 就是 一个数 ^ 两次同一个数 还是原来的数字 例如 3^5^5 的结果为3!!!
  • 打赏
  • 举报
回复
对于 ^ 是这样的,先将两边的字符或数字之类的转换为二进制,当它们的二进制一致时,就会输出0,否则会将这两个二进制相加再转换为相应的字符或数字输出
LCore 2013-05-20
  • 打赏
  • 举报
回复
引用 楼主 a1143934776 的回复:
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); //进行异或运算。这个异或运算始终不懂,求详细的通俗易懂的解释。 }
首先明白的是异或是针对二进制位来说的 相同输出0,不同输出1 举个简单的例子 1 ^ 1 00000..1 00000..1 输出0000....0 ,结果为0 2 ^ 1 00000..10 00000..01 输出00000..11,结果为3

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧