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