对于负数,short到int的转换涉及到符号扩展(sign extension)。这意味着如果short数值的最高位(即符号位)是1(表示负数),则在转换为int时,会在前面填充1(即保持符号位不变)以扩展至int的大小。如果short数值是正数(最高位为0),则扩展时会用0填充。
示例
假设short类型占用16位(2字节),而int类型占用32位(4字节)。
负数转换:
假设有一个short类型的数值-1,其二进制表示为1111 1111 1111 1111(这里为了清晰起见,我展示了16位,但在实际中,short型负数在内存中会使用二进制补码表示,且实际位数可能少于16位,但原理相同)。转换为int时,会在前面填充1,变为1111 1111 1111 1111 1111 1111 1111 1111(32位)。
正数转换:
假设short类型的数值为1,其二进制表示为0000 0000 0000 0001。转换为int时,会在前面填充0,变为0000 0000 0000 0000 0000 0000 0000 0001(32位)。