java中通过左移、右移、位或操作,可以实现将一个字节翻转。例如11001010翻转后为01010011。
下面是代码实现:
package com.thb;
public class BitOperationUtil {
private static int ONE = 1;
/**
* 将一个字节翻转.
* 例如11001010翻转后为01010011
* @param source 输入的字节
* @return 翻转后的字节
*/
public static byte invertOneByte(byte source) {
int result = 0;
int temp;
int temp2;
int data = Byte.toUnsignedInt(source);
System.out.println("source data: " + Integer.toBinaryString(data));
for (int i = 0; i <= 7; i++) {
System.out.println("i = " + i);
System.out.println("data(二进制): " + Integer.toBinaryString(data));
temp = data & ONE;
System.out.println("temp(二进制): " + Integer.toBinaryString(temp));
// 左移位
temp2 = temp << (7 - i);
System.out.println("temp2(二进制): " + Integer.toBinaryString(temp2));
// 位或操作
result |= temp2;
System.out.println("result(二进制): " + Integer.toBinaryString(result));
// 右移1位
data >>= 1;
}
return (byte)result;
}
}
调用类:
package com.thb;
public class Demo3 {
public static void main(String[] args) {
byte source = (byte)0b01011010;
byte target = BitOperationUtil.invertOneByte(source);
System.out.println("reverted data: " + Integer.toBinaryString(target));
}
}