“异或”操作的本质其实就是,所有数值和自身进行按位的“异或”操作之后都为 0。而且要通过“异或”操作得到 0,也必须通过两个相同的数值进行按位“异或”。这表明了两个数值按位“异或”结果为 0,是这两个数值相等的必要充分条件,可以作为判断两个变量是否相等的条件。
充分不必要、必要不充分、充分必要条件的数学定义:
如果:A→B, (A推出B)那么A是B的充分不必要条件,而B是A的必要不充分条件.
A←→B, (可以互相推出)A是B的充分必要条件.
代码:
public static void main(String[] args) {
int a = 53;
int b = 35;
// 获取十进制数 53 和 35 的按位“或”
System.out.println(String.format(" 数字 %d(%s) 和数字 %d(%s) 的按位‘或’结果是 %d(%s)",
a, SysConvert.decimalToBinary(a), b, SysConvert.decimalToBinary(b), or(a, b), SysConvert.decimalToBinary(or(a, b))));
// 获取十进制数 53 和 35 的按位“与”
System.out.println(String.format(" 数字 %d(%s) 和数字 %d(%s) 的按位‘与’结果是 %d(%s)",
a, SysConvert.decimalToBinary(a), b, SysConvert.decimalToBinary(b), and(a, b), SysConvert.decimalToBinary(and(a, b))));
// 获取十进制数 53 和 35 的按位“异或”int a = 53;
System.out.println(String.format(" 数字 %d(%s) 和数字 %d(%s) 的按位‘异或’结果是 %d(%s)",
a, SysConvert.decimalToBinary(a), a, SysConvert.decimalToBinary(a), xor(a, a), SysConvert.decimalToBinary(xor(a, a))));
}
/**
* @Description: 二进制按位“或”的操作
* @param num1- 第一个数字,num2- 第二个数字
* @return 二进制按位“或”的结果
*/
public static int or(int num1, int num2) {
return (num1 | num2);
}
/**
* @Description: 二进制按位“与”的操作
* @param num1- 第一个数字,num2- 第二个数字
* @return 二进制按位“与”的结果
*/
public static int and(int num1, int num2) {
return (num1 & num2);
}
/**
* @Description: 二进制按位“异或”的操作
* @param num1- 第一个数字,num2- 第二个数字
* @return 二进制按位“异或”的结果
*/
public static int xor(int num1, int num2) {
return (num1 ^ num2);
}
输出:
数字 53(110101) 和数字 35(100011) 的按位‘或’结果是 55(110111)
数字 53(110101) 和数字 35(100011) 的按位‘与’结果是 33(100001)
数字 53(110101) 和数字 53(110101) 的按位‘异或’结果是 0(0)
![](https://img.haomeiwen.com/i149690/bf48f2f446df039e.png)
网友评论