本小节较为简单,内容分为C语言的有符号数转无符号数、长整型转短整型、短整型转长整型
C语言类型转换
1.有符号数转无符号数
有符号x二进制表示是1110 1111 0001 1111,开头 1是符号位,转成无符号整型之后,开头1就是数值位,y真值为61215
2.长整型转短整型
长整型转短整型很暴力,直接从低位开始,截断取低位就行了
3.短整型转长整型
短整型转长整型需要提到我们之前讲到的符号扩展
原码的符号扩展是怎么样的?反码的符号扩展是怎么样的?补码的符号扩展是怎么样的?忘记的同学可以回顾一下计算机组成原理------第二章(9) 其中包括了定点小数、定点整数原反补的符号扩展
因为C语言存储数据是用补码存的,所以我们也用补码的符号扩展规则,
如果短整型是负数,转长整型之后符号扩展前面补1,如果短整型是正数,转长整型符号扩展前面补0