java中byte short int的理解


需求:做到一個項目,單片機讀取兩個字節,這兩個字節組成一個補碼表示的兩字節整形值。在單片機端,只是把這兩個字節寫到一個字符串中,發向上位機。

分析:首先在java中,涉及byte、short和char類型的運算操作首先會把這些值轉換為int類型,然后對int類型值進行運算,最后得到int類型的結果。

但是在這個問題中,低字節一定是正的,因此低字節跟0xff進行與運算,使得高位都歸零,也即

0x0000 00ff (有0xff擴展得到)

0xFFFF FFFF (由l(byte)擴展得到,因為byte是有符號的,但是低位數據實際上是無符號的)

=0x0000 00ff

對於高位數據

要保持其符號位,因此直接左移一個字節即可,最后相加,拼接完畢。

byte h=(byte)0xff;
byte l=(byte)0xFF;
short a = (short)(l & 0xff+h*256);

 

 


免責聲明!

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



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