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 H = -1 ^ (1 << highOff); int L = -1 ^ (1 << i); value = value & H & L; value = value | ((lowBit << highOff) | (highBit << i)); } return 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 H = -1 ^ (1 << highOff);
int L = -1 ^ (1 << i);
value = value & H & L;
value = value | ((lowBit << highOff) | (highBit << i));
}
return value;
}