Sw4*_*ish 3 java expression bitwise-operators
我在 Java 中发现了这样一行:
result |= (b & 0x1f) << shift;
Run Code Online (Sandbox Code Playgroud)
我已经搜索了运算符的作用,但我仍然无法理解假设result和b是shift整数值应该做什么。
谁能告诉我这条线应该做什么?
更新- 这是此处找到的代码的示例部分
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)
也许这个解释可能对你有帮助:
A. :执行和 之间的
(b & 0x1f)逻辑AND运算。这意味着:返回最后 5 位b0xf1bB .:运算结果
A << shift左移一位。这意味着:将一定数量的位的最后 5 位左移。shiftAbshiftC .:将变量本身与运算结果进行逻辑运算的结果
result |= B赋值给变量 。意思是:左移一定数量的位与最后5位进行逻辑运算,然后将结果赋给变量。resultORresultBORresultbshiftresult
希望它可以被理解。