signed和unsigned转换方法C语言

一、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. 取负数绝对值
  2. 取负数绝对值二进制码
  3. 取反码
  4. 反码最低位+1

如-2879(16bit),取绝对值为2879
二进制:0000 1011 0011 1111
取反码:1111 0100 1100 0000
反码+1:1111 0100 1100 0001
转换为16进制为F4C1

补充
在这里插入图片描述
signed是符号扩展,用符号位填充;unsigned是零扩展,高位全部置零

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值