您的位置:首页 > 编程语言 > Java开发

java中byte short int的理解

2013-03-16 19:56 232 查看
需求:做到一个项目,单片机读取两个字节,这两个字节组成一个补码表示的两字节整形值。在单片机端,只是把这两个字节写到一个字符串中,发向上位机。

分析:首先在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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: