我寫了一個函數來打印出一個字節的位。發生這種情況時,將最高有效位設置爲1,將其與輸入字節進行比較,如果它也是1則打印「1」,否則「0」。比較字節然後右移。有符號字節奇偶行爲的位移
如何實現先從10000000且轉移到01000000 00100000然後...
我相信我的問題是推廣造成整數,那麼重鑄,但我沒有看到解決方案。
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 strangeness
感謝這工作,我覺得有點煩人,Java做這個自動提升爲int的東西,使明智的運營商行爲不像預期的,我想知道他們爲什麼決定這樣做。 – Zac 2013-03-14 10:26:55