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
对于高位数据
要保持其符号位,因此直接左移一个字节即可,最后相加,拼接完毕。
分析:首先在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);
相关文章推荐
- java 彻底理解 byte char short int float long double
- 你真正理解java的字符类型了吗?(bit,byte,short,int等字符类型)
- java 彻底理解 byte char short int float long double
- java 彻底理解 byte char short int float long double
- java 彻底理解 byte char short int float long double
- java 彻底理解 byte char short int float long double
- java 彻底理解 byte char short int float long double
- java 彻底理解 byte char short int float long double
- 【转】java 彻底理解 byte char short int float long double
- java 彻底理解 byte char short int float long double (转)
- java中short,int转换成byte数组及byte数组转换成short,int
- java整型byte,short,int,long取值范围大小
- java中long,int,short与byte数组之间的转
- java byte数组与int,long,short,byte转换
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
- java中数据类型(short 和int)转换问题的理解
- java:byte short int long float double char
- [转]java中long,int,short与byte数组之间的转换
- java中byte数组与int,long,short间的转换
- java byte数组与int,long,short,byte转换