3

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

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

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

更新- 这是此处找到的代码示例部分

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

2 回答 2

4

也许这个解释可以帮助你:

A. : 执行和 之间(b & 0x1f)的逻辑AND运算。这意味着:返回最后 5 位b0xf1b

B. A << shift: 将运算结果左移一个shift位数 A。这意味着:将b一定数量的shift位的最后 5 位向左移动。

C. : 将自身与运算结果之间进行逻辑运算的结果result |= B赋给变量 。这意味着:在最后 5 位之间进行逻辑运算,左移一定数量的位,然后将结果赋给变量。resultORresultBORresultbshiftresult

希望可以理解。

于 2013-08-26T15:34:15.360 回答
2

它保留 b 的最后 5 位,将它们左移一些量并将它们 ors 到结果中。

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

于 2013-08-26T15:13:30.277 回答