您的位置:首页 > 职场人生

面试题:说说或运算、异或运算

2015-06-06 18:53 281 查看
位异或运算:相同则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

测试的源代码:

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
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: