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 但接下来会发生什么呢?
编辑:我已经编辑了标题,以便其他人更好地找到这个问题:添加了“复合运算符”
它们是复合运算符,例如+=和-=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)
有几分像+=。
例如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.
现在,由于性能限制和优化,此操作可能会在较低级别就地完成。