我写了一个函数来打印一个字节的位。这是通过将最高有效位设置为 1 将其与输入字节进行比较,如果它也是 1,则打印“1”,否则为“0”。然后将比较字节右移。
我如何实现从 10000000 开始并转移到 01000000 然后 00100000 ......
我相信我的问题是由提升到 int 然后重铸引起的,但我没有看到解决方案。
package errorreporting;
public class ErrorReporting {
ErrorReporting() {
}
public static void main(String[] args) {
ErrorReporting myError = new ErrorReporting();
byte myByte = 16;
myError.printByteArray(myByte);
}
public void printByteArray(byte inputByte) {
// print out 1 or 0
byte comparison = -128;
for (int x = 0; x < 8; x++) {
if ((inputByte & comparison) != 0) {
System.out.print("1");
} else {
System.out.print("0");
}
// System.out.print(" comparison : " + comparison);
comparison = (byte) (comparison >>> 1);
}
System.out.println(" : " + inputByte);
}
}
这篇文章有一些信息:Java bitshift陌生