因爲本人有點強迫症,所以覺得在Java裏最後表示出來的肯定是原碼。
但是大家都知道一個字節的原碼錶示範圍是-127~+127
但是補碼則是-128~+128
所以我一開始覺得Java裏byte類型的範圍只能是-127~+127,因爲最終都要轉化成原碼才行。
但是事實肯定不是這樣。
public class Test {
public static void main(String[] args) {
System.out.println((byte)128);
}
}
輸出是 -128
所以雖然有點強迫症,但是我還是不得不承認,似乎最後並不是要轉化成原碼。只能說最後都轉化成了一個值
正數不變,負數補碼取反加一,再加符號位
例如:
127 補碼 0111 1111
128補碼 是127+1 則爲 1000 0000
然後這個1000 0000最後的值爲多少?
1000 0000 取反加一再加符號位:
取反:0111 1111
加一:1000 0000 即爲128
再加符號位:-128