java中的位操作符_关于位操作:Java中“ >>>”运算符的用法是什么?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

Javas >> versus >>> Operator?

你好

我知道>>或<>>运算符的目的是什么?

JDK源文件中的ex PriorityQueue类,

private void heapify() {

for (int i = (size >>> 1) - 1; i >= 0; i--)

siftDown(i, (E) queue[i]);

}

不要告诉我>>>的工作原理,而是为什么要使用它。

谢谢

使用位移运算符来提高速度是过时的信念,在现代编码中造成的危害大于弊端。 不要使用它,因为(size / 2)更容易阅读并且性能也很好。

"不要告诉我>>>是如何工作的,这就是我为什么使用它" ...如果您已经知道它是如何工作的,那么现在您应该为什么使用它...

>>运算符保留最左边的位,但>>>保留。

这意味着,如果将>>移为负数,它将保持为负,但是如果使用>>>,则不会。

因此,将>>用于数学运算,将>>>用于位基运算。

使用<>和>>>对表示位模式的整数类型进行操作。

不要使用它们来"加速"乘法和除法。可能它不会有任何区别,并且实际上可能会使您的代码变慢。

Java JIT编译器应该能够为简单的算术表达式生成机器代码,这对于当前正在运行的硬件是最佳的。

如果您使用巧妙的屏蔽和移位来实现算术,则有可能1)代码对于您正在运行的机器而言不是最佳的; 2)JIT优化器不会弄清楚您实际上是在做算术。 ..因此无法进行优化。最终结果将是较慢的代码。

+1表示使用移位运算符来提高性能不是一个好主意。

>>和>>>运算符之间的区别在于>>用于无符号移位。这意味着>>>>在>>保留该位的值时清除最左边的位(因为实际上该位表示负值)

例:

您的值FFFFFFFEh = -2(有符号),则:

-2 >> 1 = FFFFFFFF = -1 // >>保留最高位值;请注意,如果我们将FFFFFFFF视为无符号值,则会出现此错误

-2 >>> 1 = 7FFFFFFF // >>>清除最高位

因此,如果要使用无符号值进行操作,则应使用>>>而不是>>。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值