Java0xffffffff爲什麼表示爲-1

int i = 0xffffffff;
System.out.println(i);    輸出-1

上面的程序有個問題

  1. 爲什麼int i = 0xffffffff;沒有報溢出錯誤,且輸出爲-1?

    因爲0xffffffff實際是二進制,程序中任何十進制,八進制,16進制的數在計算機底層都是二進制,表示成 X進制只是爲了讓人看明白,所以0xffffffff在電腦中就是32個1,而不是2的32次方減1。光是有底層表示還不夠,語言需要把底層表示解釋爲高層抽象。在java中,常數默認爲int類型(32bits),32個1解釋爲int就是-1。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章