java中关于位运算,虽然不常用,但的确也有搞明白的必要性,今天做一个小总结,让你明白例如 11>>2为何结果为2?11<<2结果为44呢?
首先先认识这两个位运算符:
左移运算(<<)与右移运算(<<)
将二进制数左移:<<
将二进制数右移:>>
恰当的使用这两个运算符可以很容易屏蔽某些位。
话不多说,直接上带有分析注释的代码:
public class LRightWiseDemo {
public static void main(String[] args) {
int aInt = 11;
int bInt = 2;
//aInt>>bInt即表示11向右移动2位
//00001011 --> 右边两位删除,左边补上两个0 00000010 = 2
System.out.println("aInt>>bInt="+(aInt>>bInt));
//aInt<<bInt即表示11向左移动2位
//00001011 --> 左边两位删除,右边补上两个0 00101100 = 4+8+32 = 44
System.out.println("aInt<<bInt="+(aInt<<bInt));
}
}
看到以上代码,可以总结得到:
a>>b 箭头指向右侧,则是a向右移动b个位;
计算即是 因为是右移 则右边删除b个而左边补上b个0,再计算出的二进制结果即为a>>b位移后的结果。
而
a<<b 箭头指向左侧,则是a向左移动b个位;
计算即是 因为是左移 则左边删除b个而右边补上b个0,再计算出的二进制结果即为a<<b位移后的结果。
from lj 2021-01-22