>>>与>>是位运算符,只对整型有效(不能用于浮点型)。
当是整型的时候(low+high)>>1可以代替(low+high)/2。
>>>是无符号右移运算符。如果 low+high是正整数,这三种运算是等价的。
 由于有编译器优化,他们的效率应该是相同的(如果不存在编译器优化,移位运算更快)。
用>>>一般是有特殊的目的

 

至于>>>和>>的区别,则在于有符号和无符号。比如-2>>>1的结果是2147483647,而-2>>1的结果是-1。(其中2147483647是-2的补码右移一位后,左边补0的结果。)

这里计算平均值使用>>>取代>>,恐怕是因为可能出现很大的数字,这些数字单独用不会超过Integer.MAX_VALUE,但求和之后可能超过,这时如果使用>>或者/来计算,会因为溢出而算出负数结果。

>>>与>>是位运算符,只对整型有效(不能用于浮点型)。
当是整型的时候(low+high)>>1可以代替(low+high)/2。
>>>是无符号右移运算符。如果 low+high是正整数,这三种运算是等价的。
 由于有编译器优化,他们的效率应该是相同的(如果不存在编译器优化,移位运算更快)。
用>>>一般是有特殊的目的

 

至于>>>和>>的区别,则在于有符号和无符号。比如-2>>>1的结果是2147483647,而-2>>1的结果是-1。(其中2147483647是-2的补码右移一位后,左边补0的结果。)

这里计算平均值使用>>>取代>>,恐怕是因为可能出现很大的数字,这些数字单独用不会超过Integer.MAX_VALUE,但求和之后可能超过,这时如果使用>>或者/来计算,会因为溢出而算出负数结果。

相关文章:

  • 2022-12-23
  • 2021-06-03
  • 2021-09-19
  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
  • 2021-10-25
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-08
  • 2021-07-22
相关资源
相似解决方案