位异或运算:相同则0(0^0,1^1),不同则1(1^0,0^1)
位或运算:如果2个位都是0则是0(0|0),其余情况都是1(0|1,1|0,1|1)
有关异或运算的结论:针对同一个数据异或两次,该数本身不变,比如:a^b^b=a,a^b^a=b
位或运算:如果2个位都是0则是0(0|0),其余情况都是1(0|1,1|0,1|1)
有关异或运算的结论:针对同一个数据异或两次,该数本身不变,比如:a^b^b=a,a^b^a=b
测试的源代码:
package java基础题目;
/*
* 异或运算?或运算?
* 位异或运算:相同则0(0^0,1^1),不同则1(1^0,0^1)
* 位或运算:如果2个位都是0则是0(0|0),其余情况都是1(0|1,1|0,1|1)
*/
public class A2015年6月6日或和异或运算 {
public static void main(String[] args) {
method1();
method2();
// 测试或运算
method3();
}
// 异或运算方法测试:位异或运算:相同则0,不同则1
public static void method1() {
// 00000000 0000000 00000000 00000001
// 00000000 0000000 00000000 00000001
System.out.println("1^1=" + (1 ^ 1));// 0 注意里面那个要加括号,考虑运算符优先级问题
System.out.println("1^2=" + (1 ^ 2));// 3
}
// 有关异或运算的结论:针对同一个数据异或两次,该数本身不变,比如:a^b^b=a,a^b^a=b
// 这个结论可用于异或运算交换2个数字
public static void method2() {
System.out.println("1^1^2=" + (1 ^ 1 ^ 2));// 2
System.out.println("1^2^2=" + (1 ^ 2 ^ 2));// 1
System.out.println("15^3^2^1^1^2^3=" + (15 ^ 3 ^ 2 ^ 1 ^ 1 ^ 2 ^ 3));// 15
}
// 或运算
public static void method3() {
System.out.println("1|1=" + (1 | 1));// 位上全是1则是1
System.out.println("1|2=" + (1 | 2));// 位上有一个是1则是3
System.out.println("0|0=" + (0 | 0));// 位上全是0则是0
}
}