short x = -32752//定义一个short
byte high = (byte) (0x00FF &(x>>8))//定义第一个byte
byte low = (byte) (0x00FF &x)//定义第二个byte
System.out.println(high)//打印第一个byte值
System.out.println(low)//打印第二个byte值
// 复原
short z = (short)(((high &0x00FF) <<8) | (0x00FF &low))
System.out.println(z)//输出的结果就是-32752
byte类型在java中用1个字节存储,有8个比特数,有符号位范围是-2的(8-1)次方到2的(8-1)次方减1,即-128~127(由于有一个比特数用于存放符号);所以无符号的话,8位比特数全用来表示数值范围,最低值为00000000(二进制数),即为0;最高值11111111即1+2+4+8+16+32+64+128(2的8次方减1)=255。public class Test{
public static void main(String[] args) {
byte bytes = -42
int result = bytes&0xff
System.out.println("无符号数: \t"+result)
System.out.println("2进制bit位: \t"+Integer.toBinaryString(result))
}
}