ビットをバイトで出力する関数を作成しました。これは、最上位ビットを入力バイトと比較して 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ビットシフトの奇妙さ