//与运算 &  规则 :都为1时才为1
        System.out.println( 7 & 9);
        /*
         *  7二进制 0111    
         *  9二进制 1001
         * ----------- 
         *        0001   ==1
         * */
        
        //或运算 | 规则:有一个为1,则为1
        System.out.println(7 | 9);
        /*
         * 7二进制 0111
         * 9二进制 1001
         * ----------
         *      1111 == 15
         * */
        
        //异或运算  ^ 规则:不同为1 
        System.out.println( 7 ^ 9);
        /*
         * 7二进制 0111
         * 9二进制 1001
         * ----------
         *      1110 == 14
         * 
         * */
        
        
        //取反运算 ~ 规则:按位取反
        System.out.println( ~7);//正数
        /*
         * 7二进制 0000 0000 0000 0000 0000 0000 0000 0111
         *      1111 1111 1111 1111 1111 1111 1111 1000  取反之后变成负数了
         *         1000 0000 0000 0000 0000 0000 0000 0111 补码
         *         1000 0000 0000 0000 0000 0000 0000 1000 原码  == -8
         * 
         * */
        System.out.println(~-7);
        /*
         * 7二进制 1000 0000 0000 0000 0000 0000 0000 0111
         *         1111 1111 1111 1111 1111 1111 1111 1000  负数先转成补码
         *      1111 1111 1111 1111 1111 1111 1111 1001  补码
         *      0000 0000 0000 0000 0000 0000 0000 0110 得到负数的补码之后进行取反 (这时得到的是正数) 6
         * */

标签: 与 或 异或 取反