运算符 | 运算 | 范例 |
---|---|---|
<< | 左移 | 3 << 2 = 12 --> 3 * 2 * 2 = 12 |
>> | 右移 | 3 >> 1 =1 --> 3 / 2 = 1 |
>>> | 无符号右移 | 3 >>> 1 = 1 --> 3/2 = 1 |
& | 与运算 | 6 & 3 = 2 |
l | 或运算 | 6 l 3 = 7 |
^ | 异或运算 | 6 ^ 3 = 5 |
~ | 取反运算 | ~6 = -7 |
int i = 21;
i = -21;
System.out.println("i << 2 :" + (i << 2));
System.out.println("i << 3 :" + (i << 3));
System.out.println("i << 27 :" + (i << 27));
int m = 12;
int n = 5;
System.out.println("m & n :" + (m & n));
System.out.println("m | n :" + (m | n));
System.out.println("m ^ n :" + (m ^ n));
能否写出最高效的2*8的实现方式?
int m = 10;
int n = 20;
m = m ^ n;
n = m ^ n;
m = m ^ n;
System.out.println("m = " + m + ",n = " + n);
String str1 = Integer.toBinaryString(60);//二进制
String str2 = Integer.toHexString(60);//十六进制
int i1 = 60;
int i2 = i1 & 15;//15的后四位是1111,i1&15得到的数是自己的后四位提取出来的
String j = (i2 > 9)?(char)(i2 - 10 + ‘A‘) + "" : i2 + "";//(i2 - 10 + ‘A‘)是为了将十进制用十六进制来表示出来
int temp = i1 >>> 4;//因为i1最后四位已经得到,就无符号右移4位,取出倒数第二个的后四位
i2 = temp & 15;
String k = (i2 > 9)?(char)(i2 - 10 + ‘A‘) + "" : i2 + "";
System.out.println(k + "" + j);
原文:https://www.cnblogs.com/xiaolinischengxuyuan/p/14889411.html