Java 没有 unsigned 类型
所以强制转型的时候会出现数值丢失的现象unsigned 1000 = 1111101000
这个 1111101000 正好是 signed -24
1000000 = 11110100001001000000
              ^
由于 short 是 16bit 的数据类型
所以转型后的数 0100001001000000 正好是 signed 16960

解决方案 »

  1.   

    太好了,你那-24是怎么运算出来的,是不是对11101000进行什么样的运算,还不清楚,烦再解释下
      

  2.   

    计算机存储负数的时候是按照"原码"的"补码"进行存储的
    补码是对原码按位取反再加一
    原码: 1000011000    24
    补码: 1111101000    -24
    最高位是符号位