int 类型32位长度,short是16位数据存储时是按补码形式二进制,如果首位是0,为正数,首位为1,为负数当你把一个32位的数截取后面的16位,会发生那16位的首位跟原来的32位的首位不同。也就导致正数截取后为负数,负数截取后是正数。一般不建议高精度向低精度转换