輸出byte類型的值爲128結果爲-128的緣由

聲明:若有不對,請聯繫筆者,及時改正,共同窗習。
ide


先上一段代碼:
學習


  
  
  
  
  1. public static void main(String[] args) { 
  2.         byte b = (byte)(129); 
  3.         System.out.println(b); 
  4.     } 

main方法裏面有這麼一段。
spa

你們都知道Java裏面byte取值範圍在-128~127之間,上面這段代碼很顯然已經超出byte範圍,但不會報錯。也能輸出結果,結果爲-128。爲何會是這個結果呢?it

涉及到補碼運算。過程是先將b,就是127轉換成Int型的,而後加1,最後截掉高八位,剩下10000000,Byte是有符號的,因此這個值全部爲取反在加1就是它的絕對值,因此這個數就是-128。class

歡迎討論。方法

相關文章
相關標籤/搜索