https:///blog/java-shit-operation/ Java位运算符(bitwise operators),应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)。 位运算符作用在所有的位上,并且按位运算。假设a = 5,b = 12;它们的二进制格式表示将如下: A = 0101 B = 1100 ----------------- A&B = 0100 A | B = 1101 A ^ B = 1001 ~A= 1010
位移说明 A << 2 表示A 向左边移动2位 A = 0101 计算机的前面其实还有很多0 所以 表示如下 位移前:A = 0000 0101 位移后:A = 0001 0100 当A >> 2 向右边移动的时候,后面没有空间了。所以砍掉 位移前:A = 0000 0101 位移后:A = 0000 0001 Java测试代码 int a = 5; int b = 12; System.out.println("a 的二进制:" + Integer.toBinaryString(a)); System.out.println("b 的二进制:" + Integer.toBinaryString(b)); int c = 0; c = a & b; System.out.println("a & b = " + c +" 即"+Integer.toBinaryString(c)); c = a | b; System.out.println("a | b = " + c +" 即"+Integer.toBinaryString(c)); c = a ^ b; System.out.println("a ^ b = " + c +" 即"+Integer.toBinaryString(c)); c = ~a; System.out.println("~a = " + c +" 即"+Integer.toBinaryString(c)); c = a << 2; System.out.println("a << 2 = " + c +" 即"+Integer.toBinaryString(c)); c = a >> 2; System.out.println("a >> 2 = " + c+" 即"+Integer.toBinaryString(c) ); c = a >>> 2; System.out.println("a >>> 2 = " + c+" 即"+Integer.toBinaryString(c) ); 输出 a 的二进制:101 b 的二进制:1100 a & b = 4 即100 a | b = 13 即1101 a ^ b = 9 即1001 ~a = -6 即11111111111111111111111111111010 a << 2 = 20 即10100 a >> 2 = 1 即1 a >>> 2 = 1 即1 复合位赋值运算符
|
|