java - 有人可以解释以下表达式在该程序中的作用吗?
问题描述
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 中?
解决方案
&
是按位与运算符,但当按位操作数为 2 n - 1 时,与操作数加 1&
相同%
,即这两个相同(对于正数x
):
x & 3 // AND with 11
x % 4 // modulo 4
在您的情况下,& 3
(or % 4
) 仅产生 0 到 3 之间的值(对于 positive x
)。
推荐阅读
- android - 如何将两个形状组合成可绘制的?
- reactjs - Recharts PieChart - 数组或迭代器中的每个孩子都应该有一个唯一的“关键”道具
- python-2.7 - 由于 NoneType 错误,Matplotlib 动画失败?
- javascript - 自动过期帖子
- html - 如何打破传递给 setCustomValidity (HTML5) 的文本
- postgresql - 9.6 升级后 postgresql IN 查询出现奇怪的性能问题
- javascript - 如何使用 Node JS 作为后端来设置 AngularJS 工作区
- django - 在 django 查询集中获取反向相关模型的字段值
- wso2 - WSO2 企业集成商密钥库
- php - 使用 Php 将嵌套 JSON 插入 mySQL