在C或C++中无法确定(执行中将会选择效率较高的一种)>>操作执行的是算术移位(扩展符号位),还是逻辑移位(不管左移还是右移,都补0)。这就是说,在C或C++中,>>运算符实际上只是为非负数定义的。
而java消除了这种含糊性。java中移位运算符有三种:<<左移运算符,>>右移运算符用符号位填充高位,>>>右移运算符用0填充高位,(注意,没有<<<运算符,因为左移运算符对于算术移位和逻辑移位来说是一样的,所以没必要用<<<来说明他们之间的区别。
在C或C++中无法确定(执行中将会选择效率较高的一种)>>操作执行的是算术移位(扩展符号位),还是逻辑移位(不管左移还是右移,都补0)。这就是说,在C或C++中,>>运算符实际上只是为非负数定义的。
而java消除了这种含糊性。java中移位运算符有三种:<<左移运算符,>>右移运算符用符号位填充高位,>>>右移运算符用0填充高位,(注意,没有<<<运算符,因为左移运算符对于算术移位和逻辑移位来说是一样的,所以没必要用<<<来说明他们之间的区别。