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

3
我发现Java中有一行代码是这样的:
result |= (b & 0x1f) << shift;

我已经搜索了运算符的相关信息,但仍然无法理解它应该做什么,假设resultbshift均为整数值。
有人能告诉我这行代码的作用吗?
更新 - 这里是在这里找到的代码示例的一部分。
int b, shift = 0, result = 0;
do {
    b = encoded.charAt(index++) - 63;
    result |= (b & 0x1f) << shift;
    shift += 5;
} while (b >= 0x20);

你需要提供更多的上下文来了解这段代码在做什么。这段代码是从这里获取的吗:http://jeffreysambells.com/2010/05/27/decoding-polylines-from-google-maps-direction-api-with-java - Adam Burry
如果你知道 &<<|= 的作用,那么你应该能够理解那行代码的含义。 - Bernhard Barker
@Adam Burry 已更新。@Dukeling 当然,我无法理解特定的那部分:(b & 0x1f) << shift 即使我对十六进制值和移位运算符有基本的了解。 - Sw4Tish
2个回答

5
也许这个解释可以帮助你:
A. (b & 0x1f):对b0xf1执行逻辑AND操作。这意味着:返回b的最后5位。
B. A << shift:将A操作的结果向左移动shift位。这意味着:将b的最后5位向左移动shift位。
C. result |= B:将result变量赋值为执行逻辑OR操作的结果,该操作在result本身和B操作的结果之间执行。这意味着:对b的最后5位向左移动shift位执行逻辑OR操作,然后将结果分配给result变量。
希望这能够理解。

2

感谢提供文档! - Sw4Tish

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接