语法/运算符Java - 这行是什么意思?

时间:2013-08-26 15:07:33

标签: java expression bitwise-operators

我在Java中找到了这样一行:

result |= (b & 0x1f) << shift;

我已经搜索了运算符的作用,但我仍然无法理解假设resultbshift是整数值,它应该做什么。 /> 谁能告诉我这条线应该做什么?

更新 - 以下是找到的代码的示例部分here

int b, shift = 0, result = 0;
do {
    b = encoded.charAt(index++) - 63;
    result |= (b & 0x1f) << shift;
    shift += 5;
} while (b >= 0x20);

2 个答案:

答案 0 :(得分:4)

也许这个解释可能会对你有所帮助:

  

一个。 (b & 0x1f):在ANDb之间执行逻辑0xf1操作   b。这意味着:返回A << shift

的最后5位      

B中。 shift:向左移动A位的结果   b操作。这意味着:将shift的最后5位向左移动result |= B位。

     

℃。 result:将OR变量分配给执行a的结果   result本身与B结果之间的逻辑OR操作   操作。这意味着:在resultb的最后5位之间执行逻辑shift向左移动一定量result位,然后将结果分配给{{ 1}}变量。

希望这是可以理解的。

答案 1 :(得分:2)

它保留了b的最后5位,左移了一些数量,然后将它们转换成结果。

在这种情况下,它正在逆转此处描述的过程: https://developers.google.com/maps/documentation/utilities/polylinealgorithm