//与运算 & 规则 :都为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 * */ 标签:
https://www.cnblogs.com/ismileboy/p/7241567.html