【问题标题】:java bitwise operators and the equal character; compound operatorsjava按位运算符和等号;复合运算符
【发布时间】:2013-07-25 09:08:49
【问题描述】:

我有点困惑:

long v = 0;
v <<= 8; 
v |= 230;

我知道

所以拳头v是0。所以

编辑:我已经编辑了标题,所以其他人可能会更好地找到这个问题:添加了“复合运算符”

【问题讨论】:

  • 有效果。 v = v &lt;&lt; 8 然后v = v | 230

标签: java operators bit-manipulation compound-operator


【解决方案1】:

有点像+=

例如x+=3表示x加3;存储到 x。

v <<= 8;

将 v 左移 8 位,并存储到 v,功能上等同于 v=v &lt;&lt; 8

v |= 230;

与 230 进行按位或运算并存储回 v,相当于 v=v | 230

现在,由于性能限制和优化,此操作可能就地在低级别完成。

【讨论】:

  • @Thomas 没问题。请使用旁边的复选标记接受对您最有帮助的答案。
  • 我得等几分钟才能做到;但我会:)
  • 执行v=v | 230v 的值是多少??
  • @sureshatta 试试看。取决于原来的v
【解决方案2】:

它们是复合运算符,例如+=-=。他们执行操作,然后将结果分配回v

基本上:

v <<= 8;

有效

v = v << 8;

同样

v |= 230;

有效

v = v | 230;

你可以看到+=-=的相似之处:

v += 1;

有效

v = v + 1;

【讨论】:

    【解决方案3】:

    基本上是这样的:

    v <<= 8; 
    v |= 230;
    

    等价于:

    v = v << 8; 
    v = v | 230;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-31
      • 2011-11-16
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 2012-03-21
      • 1970-01-01
      • 2020-09-25
      相关资源
      最近更新 更多