Java數值表示


因爲本人有點強迫症,所以覺得在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

發佈了46 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章