Java 没有 unsigned 类型
所以强制转型的时候会出现数值丢失的现象unsigned 1000 = 1111101000
这个 1111101000 正好是 signed -24
1000000 = 11110100001001000000
^
由于 short 是 16bit 的数据类型
所以转型后的数 0100001001000000 正好是 signed 16960
所以强制转型的时候会出现数值丢失的现象unsigned 1000 = 1111101000
这个 1111101000 正好是 signed -24
1000000 = 11110100001001000000
^
由于 short 是 16bit 的数据类型
所以转型后的数 0100001001000000 正好是 signed 16960
补码是对原码按位取反再加一
原码: 1000011000 24
补码: 1111101000 -24
最高位是符号位