美文网首页
位的"异或"

位的"异或"

作者: hswwjp | 来源:发表于2018-12-15 14:48 被阅读10次

           “异或”操作的本质其实就是,所有数值和自身进行按位的“异或”操作之后都为 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://time.geekbang.org/column/article/71840

    相关文章

      网友评论

          本文标题:位的"异或"

          本文链接:https://www.haomeiwen.com/subject/gilahqtx.html