【发布时间】:2014-08-31 16:45:14
【问题描述】:
我正在尝试理解一段代码,但无法清楚地了解几点 这是Java代码
private String firstMethod(int number){
return secondMethod(number >> 16 & 0xFF, 0).concat(secondMethod(number >> 8 & 0xFF, 1)).concat(secondMethod(number & 0xFF, 7));
}
private static String secondMethod(int value, int offset)
{
return thirdMethod(value >> 4, offset).concat(thirdMethod(value & 0xF, offset + 4));
}
private static String thirdMethod(int value, int offset)
{
String chars = getAlphabet();
int pos = (value + offset) % 16;
return chars.substring(pos, pos + 1);
}
第一次传递给firstMethod的值是一个随机数,所有后续调用方法都将传递值加1。
我对按位右移操作以及& 0xFF的使用很清楚,但是我仍然不太清楚以下几点
- 按特定数字移动给定值(例如 16 和 8 表示第一次而不是没有筛选等)
- 不清楚偏移量的使用,特别是传递某个数字作为偏移量。
谁能帮我理解这两点
【问题讨论】:
-
第三种方法的代码被截断
-
@Antimony:我也向第三种方法添加了代码
标签: java bit-manipulation