一、signed转换为unsigned
当int(16bit)时
signed类型整数,共16位。第一位为符号位,正数为0、负数为1,剩下15进行编码,存储范围为-215到215-1,即-32768到32767。
unsigned类型整数,16位全部用来编码,存储范围为0到216-1,即0到65536。

负数转化
因为负数一定会超出取值范围,所以在某些语言中将负数赋值为unsigned类型是非法的。在合法情况下,signed转换unsigned方法如下
- 取负数绝对值
- 取负数绝对值二进制码
- 取反码
- 反码最低位+1
如-2879(16bit),取绝对值为2879
二进制:0000 1011 0011 1111
取反码:1111 0100 1100 0000
反码+1:1111 0100 1100 0001
转换为16进制为F4C1
补充

signed是符号扩展,用符号位填充;unsigned是零扩展,高位全部置零
本文详细解释了16位signed整数如何转换为unsigned类型,重点介绍了负数处理方法,包括取绝对值、反码操作,并通过实例说明了符号扩展与零扩展的区别。

2214

被折叠的 条评论
为什么被折叠?



