//与运算 & 规则 :都为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
* */
标签: 与 或 异或 取反