32位有符号数强制转换为16位有符号数

问题描述:

32位有符号数强制转换为16位有符号数
16进制32位有符号数 0xFFFF2AAA,强制转换为16位有符号数,结果是什么,为什么?

结果是2AAA.理由:丢弃高位原来32位的是负数,转换之后是正数,这样就错了,有办法解决?没办法解决,16位有符号数的表示范围是-32768~32767,0xFFFF2AAA换算是十进制数是-54614,已经超出16位有符号数的表示范围了。