首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谁能解释一下下面的表达式在这个程序中是做什么的?

谁能解释一下下面的表达式在这个程序中是做什么的?
EN

Stack Overflow用户
提问于 2021-02-09 11:54:43
回答 2查看 50关注 0票数 0
代码语言:javascript
运行
复制
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在这段代码中的作用是什么,它是不是应该在字节x上加上3的缩写?

EN

回答 2

Stack Overflow用户

发布于 2021-02-09 12:03:31

您将转换为基数4,这意味着每个数字有两位。

3是二进制11,即两位。

&3是按位and,它有效地隔离了最右边的两位,或最右边的基数4位。

这与将数字2位向右移位的>>2相结合。

整个循环:获取最右边的两位,移位两位,获取下两位,移位,等等。

票数 1
EN

Stack Overflow用户

发布于 2021-02-09 12:04:19

代码语言:javascript
运行
复制
"0123".charAt(x & 3)

charAt返回给定索引处的给定字符串的字符。在本例中,字符串为"0123",索引由x & 3确定。

3是二进制形式的0000 0011。2位二进制数范围[0, 3]00011011

x & 3屏蔽了x中的高位

代码语言:javascript
运行
复制
  x7 x6 x5 x4 x3 x2 x1 x0
&  0  0  0  0  0  0  1  1
-------------------------
                    x1 x0

所以你可以简单地把x & 3想象成x % 4。毫无疑问,按位运算比算术运算快得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66112746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档