1
考慮下面的代碼:Java的BigInteger的如何登錄幅度作品
int i = 1;
System.out.println("1 binary: " + Long.toBinaryString(i));
long ri = Long.reverse(i);
System.out.println("1 reverse bit decimal: " + ri);
System.out.println("1 reverse bit binary: "+ Long.toBinaryString(ri));
BigInteger bil = new BigInteger(1, Longs.toByteArray(ri));
System.out.println("1 Sign-Magnitude BigInteger toString: " + bil.toString());
輸出是:
1 binary: 1
1 reverse bit decimal: -9223372036854775808
1 reverse bit binary: 1000000000000000000000000000000000000000000000000000000000000000
1 Sign-Magnitude BigInteger toString: 9223372036854775808
誰能幫助解釋爲什麼「1符號 - 幅度的BigInteger的toString的價值: 「是9223372036854775808(2^63)?
Plase讀了大約一補,補 - 這Java使用簡單的類型,如int和長 - 和登錄幅度,這BigInteger的使用。你似乎很迷惑*回覆*,*反轉*和*否定*。在二進制補碼中,否定意味着反轉並添加一個。在補碼中,反轉和否定是相同的。在符號幅度中,否定意味着翻轉符號位。但是這些*都沒有恢復*(即將最低位變成最高位等) –