首页 > 解决方案 > 有人可以解释以下表达式在该程序中的作用吗?

问题描述

String convertByteToBase4(byte x) {
    String result = “";
    for (int i=0; i<4; i++) {
        result = "0123".charAt(x & 3) + result;
        x = (byte)(x>>2)
    }
    return result;
}

我对这段代码中 &3 的用途感到困惑,是否应该将 3 的缩写添加到字节 x 中?

标签: javasyntax

解决方案


&是按位与运算符,但当按位操作数为 2 n - 1 时,与操作数加 1& 相同%,即这两个相同(对于正数x):

x & 3 // AND with 11
x % 4 // modulo 4

在您的情况下,& 3(or % 4) 仅产生 0 到 3 之间的值(对于 positive x)。


推荐阅读