package concurrentMy; /** * * (位运算符) * * <p> * 修改历史: <br> * 修改日期 修改人员 版本 修改内容<br> * -------------------------------------------------<br> * 2016年3月22日 上午10:13:57 user 1.0 初始化创建<br> * </p> * * @author Peng.Li * @version 1.0 * @since JDK1.7 */ public class ConcurrentHashMapTest { public static void main(String[] args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ //11 1100 System.out.println(Integer.toBinaryString(a)); //1101 System.out.println(Integer.toBinaryString(b)); //按位取与,两个数,只要一个数为0,结果为0 int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c ); //1100 System.out.println(Integer.toBinaryString(c)); //按位运算,或 两个数只要一个数为1,结果为1 c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c ); // 按位异或操作符,两个操作数的某一位不相同时候结果的该位就为1。 c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c ); //按位补运算符翻转操作数的每一位。 c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c ); //按位右移运算符。左操作数按位右移右操作数指定的位数。 c = a << 2; /* 240 = 1111 0000 */ System.out.println("a << 2 = " + c ); //按位右移运算符。左操作数按位右移右操作数指定的位数。 c = a >> 2; /* 15 = 1111 */ System.out.println("a >> 2 = " + c ); //按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 c = a >>> 2; /* 15 = 0000 1111 */ System.out.println("a >>> 2 = " + c ); } }