c语言16位存储形式,C语言中16位整型数据的取值范围

本文介绍C语言中16位整型数据的取值范围。

1. 无符号16位整型数据

对于无符号(unsigned)型数据,存储单元中全部二进位(bit)都用作存放数本身,而不包括符号。所以对于16位整型,取值范围如下:

0000 0000 0000 0000 到 1111 1111 1111 1111

对应的十进制数为0到65535(即216-1)。

所以,无符号16位整型数据的取值范围是0到65535。

说明:无符号整型变量只能存放不带符号的整数,如123、4567等,而不能存放负数。

2. 有符号16位整型数据

对于有符号(signed)整型,存储单元中最高位代表符号位:0为正,1为负。

a)当最高位为0,即代表正数时,取值范围如下:

0000 0000 0000 0001 到 0111 1111 1111 1111

对应的十进制数为1到32767(即215-1)。

b)当最高位为1,即代表负数时,取值范围如下(以补码形式表示):

1000 0000 0000 0000 到1111 1111 1111 1111

对应的十进制数为-32768(即-215)到-1。

所以,有符号16位整型数据的取值范围是-32768到32767。

———————————————— 分割线 —————————————————

备注:为了更好地理解符号位为1,即数值为负时的取值范围,在此处对-1和-32768的原码和补码进行计算并解释。

1. 计算-1的补码:

a)1的原码:0000 0000 0000 0001;

b)取反:1111 1111 1111 1110;

c)加1:1111 1111 1111 1111。

所以,-1的补码为1111 1111 1111 1111。

2. 计算-1的原码:

a)除符号位,其余位取反:1000 0000 0000 0000

b)加1:1000 0000 0000 0001

所以,-1的原码为1000 0000 0000 0001。

3. 计算-32768的补码:

a)32768的原码:(00) 1000 0000 0000 0000

b)取反:(11) 0111 1111 1111 1111

c)加1:(11) 1000 0000 0000 0000

所以,-32768的补码为(11) 1000 0000 0000 0000

说明:

1. 括号中的00、11,表示更高位置的符号位,在某些情况下,使用(显示)更高位置的符号位可以清晰地表达计算过程;

2. 在上述的补码结果中可以看出,如果不使用更高位置的符号位“(11)”的情况下,即-32768的补码为1000 0000 0000 0000时,最高位的1既代表了符号位,同时也代表了数值位;而如果使用更为位置的符号位“(11)”的情况下,即-32768的补码为(11) 1000 0000 0000 0000,时,最高位1仅代表数值位,“(11)”代表负数。

4. 计算-32768的原码,为了更好地解释此计算过程,此处使用更高的符号位,如下:

a)除符号位,其余取反:(11) 0111 1111 1111 1111

b)加1:(11) 1000 0000 0000 0000

所以,-32768的原码为(11) 1000 0000 0000 0000。

说明:从本文看来,-32768数字情况比较特殊,虽然是一个负数,但是其原码与补码是一样的。

————————————————————————————————————————————————

备注:对于有符号位的16位整型,为何会包含-32768,仍然是不清楚,以后如果有机会弄清楚,需要在此文补充上。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值