java里int類型轉byte類型


今天在做書上的一個例子的時候, 要使用byte類型,首先我很直接的就寫到了byte b = 0XAA, 結果報錯, 說從int轉換到byte可能會有損失. 我當時就很奇怪, 為什么會出現這種情況呢? 0XAA轉化為10進制的byte類型就是-86, 並沒有超出-128~127的范圍.而且如果直接賦值byte b = -86 ; 也是正常通過.

 

經過網上一位前輩的教導, 現在有了這樣的結論:

  1. 在計算機中是沒有正負數的區分的, 所有的正負數都是人為規定的
  2. byte類型的最小值-128二進制位1000 0000 , 其實就是-0, 是人為規定的.
  3. java程序中遇到16進制數, 會優先處理成數值, 也就是10進制中的數值部分, 而不是包括符號位的數據

   所以在進行byte b = 0XAA; 這樣的賦值的過程中, 0XAA被處理成0 1000 0000 也就是int類型的170 , 然后0 1000 0000轉化成byte類型. 由於byte類型放不下符號位在內的全部數據, 所以報錯會有精度損失.

//這些都是我通過前輩的指導中理解的, 如果有什么不對的地方, 歡迎指正.^_^


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM