java中的移位运算符
2012-09-19 07:16:35 来源:WEB开发网核心提示: 移位运算符是在数字的二进制形式上进行平移,主要有左移(<<)、带符号右移(>>)以及无符号右移(>>>),java中的移位运算符,左移运算符(<<)的运算规则为:按二进制形式将数字左移相应位数,高位舍弃,而对于byte、char以及short,在做移位运算时会自动
移位运算符是在数字的二进制形式上进行平移。主要有左移(<<)、带符号右移(>>)以及无符号右移(>>>)。
左移运算符(<<)的运算规则为:按二进制形式将数字左移相应位数,高位舍弃,低位补零。
带符号右移运算符(>>)的运算规则为:按二进制形式将数字右移相应位数,低位舍弃,高位正数补零,负数补1。
无符号右移运算符(>>>)的运算规则为:按二进制形式将数字右移相应位数,低位舍弃,高位补零。
int a=-8;
System.out.println(a << 2);
System.out.println(a >> 2);
System.out.println(a >>> 2);
输出结果为
-32
-2
1073741822
值得注意的移位运算其实可以看做对类型的位数取余后的移位。java中int是32位,long是64位。比如对int型的数字做左移40位的操作,与左移40%32=8位效果是相同的。若对int型做移位32*n的运算,则相当于什么都没做。
而对于byte、char以及short,在做移位运算时会自动类型转换成int型。因此对于下面的代码,输出为8 8 8 8 0
byte b=8;
short s=8;
char c=8;
int i=8;
long l=8;
System.out.println(b >> 32);
System.out.println(s >> 32);
System.out.println(c >> 32);
System.out.println(i >> 32);
System.out.println(l >> 32);
更多精彩
赞助商链接