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

Sw4*_*ish 3 java expression bitwise-operators

我在 Java 中发现了这样一行:

result |= (b & 0x1f) << shift;
Run Code Online (Sandbox Code Playgroud)

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

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

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

dic*_*c19 5

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

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

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

C .:将变量本身与运算结果进行逻辑运算的结果result |= B赋值给变量 。意思是:左移一定数量的位与最后5位进行逻辑运算,然后将结果赋给变量。resultORresultBORresultbshiftresult

希望它可以被理解。