【后端开辟】java中>>>是什么意义?

java中>>>是什么意义?

>>>是java中的移位运算符,示意无标记右移。

移位运算符面向的运算对象也是二进制的“位”。可零丁用它们处置惩罚整数范例(主范例的一种)。

“有标记”左移位运算符(<<)能将运算符左侧的运算对象向左挪动运算符右边指定的位数(在低位补0)。

“有标记”右移位运算符(>>)则将运算符左侧的运算对象向右挪动运算符右边指定的位数。“有标记”右移位运算符使用了“标记扩大”:若值为正,则在高位插进去0;若值为负,则在高位插进去1。

Java 也添加了一种“无标记”右移位运算符(>>>),它使用了“零扩大”:不管正负,都在高位插进去0。这一运算符是C 或C++没有的。

若对char,byte 或许short 举行移位处置惩罚,那末在移位举行之前,它们会自动转换成一个int。只要右边的5 个低位才会用到。如许可防备我们在一个int 数里挪动不切实际的位数。若对一个long 值举行处置惩罚,末了获得的效果也是long。此时只会用到右边的6 个低位,防备挪动凌驾long 值里现成的位数。

但在举行“无标记”右移位时,也能够碰到一个题目。若对byte 或short 值举行右移位运算,获得的能够不是准确的效果(Java 1.0 和Java 1.1 迥殊凸起)。

它们会自动转换成int 范例,并举行右移位。但“零扩大”不会发作,所以在那些情况下会获得-1 的效果。可用下面这个例子检测本身的完成计划:

public class URShift {
public static void main(String[] args) {
int i = -1;
i >>>= 10;
System.out.println(i);
long l = -1;
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
}

以上就是java中>>>是什么意义?的细致内容,更多请关注ki4网别的相干文章!

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注