在Java中,位运算常用的就是移位运算了。所以会按照个人的理解去回顾这个知识点,不会太深入。如果对位运算感兴趣的可以去其他博客搜搜,讲解非常详细。
移位运算所进行的操作是在二进制的基础之上对数字进行平移,有左移运算和右移运算。
给一个代码例子:
//6的二进制
0000 0000 0110
//8的二进制
0000 0000 1000
0000 0000 0000 //右移5位
0000 0100
1000 0000 //左移5位
//1乘以2的7次方 输出128
//3的二进制
0000 0011
1100 0000 //左移6位
移位运算所进行的操作是在二进制的基础之上对数字进行平移,有左移运算和右移运算。
给一个代码例子:
//测试右移位运算
//结果是1 和 0
System.out.println(6>>2); //6右移2位
System.out.println(8>>5); //8右移5位
本质是二进制的运算,所以我们将6 和 8转成二进制。
如果不懂二进制也可以使用电脑自带的计算器,改成程序员用的就可以了。但建议一定要学会二进制,并且熟练与八进制和十六进制的转换,会让你更明白计算机原理。
进入正题://6的二进制
0000 0000 0110
0000 0000 0001 //右移2位
//1 乘以2的0次方 输出1//8的二进制
0000 0000 1000
0000 0000 0000 //右移5位
//0乘以2的0次方 输出0
//测试左移运算
//结果为128 192
System.out.println(4<<5);
System.out.println(3<<6);
//4的二进制
0000 0100
1000 0000 //左移5位
//1乘以2的7次方 输出128
//3的二进制
0000 0011
1100 0000 //左移6位
//1乘以2的7次方 + 1乘以2的6次方 输出192
上面是以二进制的平移方式来得出的,还有取巧的方式,计算2的次方非常迅速。
就是:左移几位就乘以2的几次方 , 右移几位就除以2的几次方
以 4<<5 为例 : 就是4 乘以 2 的5次方 4 * 32 可以很快得出结果128
10>>2 : 10除以 2的2次方 10/4 = 2
要想得到2的10次方 只需要 1<<10 即可。
--------------------------------------------------------------------------------------------------------
关于下图的Java运算符,不需要去记优先级,使用括号运算符能更好的增加可读性。