java 按位运算符和等于字符;复合运算符

Tho*_*mas 4 java bit-manipulation operators compound-operator

我有点困惑:

long v = 0;
v <<= 8; 
v |= 230;
Run Code Online (Sandbox Code Playgroud)

我知道 << 是带符号的左移运算符,而 | 按位包含 OR 但我对 equals 的作用感到困惑?

所以拳头 v 是 0。那么 << 没有任何效果?那么它等于 1000 但接下来会发生什么呢?

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

T.J*_*der 5

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

基本上:

v <<= 8;
Run Code Online (Sandbox Code Playgroud)

已生效

v = v << 8;
Run Code Online (Sandbox Code Playgroud)

同样地

v |= 230;
Run Code Online (Sandbox Code Playgroud)

已生效

v = v | 230;
Run Code Online (Sandbox Code Playgroud)

+=您可以看到与和 的相似之处-=

v += 1;
Run Code Online (Sandbox Code Playgroud)

是有效地

v = v + 1;
Run Code Online (Sandbox Code Playgroud)


ζ--*_*ζ-- 5

有几分像+=

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

v <<= 8;
Run Code Online (Sandbox Code Playgroud)

将 v 左移 8 位,并存储到 v,功能上相当于v=v << 8

v |= 230;
Run Code Online (Sandbox Code Playgroud)

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

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

  • 我得等几分钟才可以;但我会 :) (2认同)