public static int reverse(int value) {
for (int i = 0; i < 16; i++) {
int highOff = 32 - i - 1;
int lowBit = (value >> i) & 1;
int highBit = (value >> highOff) & 1;
/*
* 屏蔽地i位和32-i位为0,其他位为1
*/
int markH = -1 ^ (1 << highOff);
int markL = -1 ^ (1 << i);
value = value & markH & markL;
value = value | ((lowBit << highOff) | (highBit << i));
}
return value;
}