C语言中短整型取值范围,以c语言中短整型(signed int)的取值范围为例说明各种数据类型取值范围的计算方式与原理...

在开始我们的正文之前,你需要先了解一下原码、反码、补码这三个概念以及这三者之间的相互转换方式。

在有了一定的了解之后,我们开始我们的介绍。在本文中,我们以短整型为例,给大家介绍该类型的取值范围的计算方式,以及原理。

首先默认情况下,unsigned int 占用2个字节(跟具体的编译器和操作系统有关),也就是16位。

在计算机存储的数据中,都是用0和1表示的,并且是用补码表示的(很重要)。

在实际的存储过程中,我们规定表示负数的时候,最高位为符号位(负数的符号位为1),那么对于这个16位,我们能表示的最小的负数应当是这个样子的:1000 0000 0000 0000 ,我们在前面说过,在计算机中,是以补码形式存储的,所以但是在计算机中负数是用补码(原码符号位不变,其余位取反,然后加1)表示的,所以我们要把它转换成原码再和十进制转换。我们发现在转换成原码之后,依旧是1000 0000 0000 0000。

我们现在假想一个问题,如果我们有+0和-0这两种情况,我们用二进制该怎么表示呢?

对于+0,它应该是0000 0000 0000 0000;

对于-0,它应该是1000 0000 0000 0000。

但是无论+0还是-0,从数学的角度它都应该是0,但是在计算机的二进制存储中我们却发现-0的二进制竟然和16位二进制存储中的最小值(即前面提到的1000 0000 0000 0000)一样,但是0肯定不是这里的最小值啊,于是为了解决这个问题,我们规定,1000 0000 0000 0000表示16位中的最小值,即-32768。

表示正数时,最高位为符号位(正数的符号位为0),最大的正数为0111 1111 1111 1111 即2^15 - 1 = 32767。

所以16位的短整型所能表示的范围是-32768 - 32767。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值