当前位置:首页 > 问问

有符号整形的取值为什么是-32768 有符号整形为何取-32768

1、二进制补码表示

有符号整形采用二进制补码表示方式。在补码表示中,符号位为最高位,0表示正数,1表示负数。负数的补码是其绝对值的二进制表示取反后加1。

以16位补码为例,最小的负数是1000 0000 0000 0000,这是最高位为1,其余位均为0的二进制数,对应于十进制数-32768。

2、表示原码时的溢出问题

在有符号整形采用原码表示方式的情况下,最小的负数是1000 0000 0000 0000。在加1时就会溢出,得到的结果是1000 0000 0000 0000,这个数字的绝对值大于32767,超出了有符号整形的表示范围。

因此,为了解决这个溢出问题,有符号整形采用了补码表示方法,最小的负数变成了1000 0000 0000 0000,没有溢出问题。

3、奇偶性的考虑

在有符号整形采用补码表示方式下,对于16位整数,取值范围为-32768至32767。而如果取值范围为-32767至32767,则会出现一个问题:0没有对应的表示。因为0的补码是0000 0000 0000 0000,而当用原码表示时,就是+0,与-0无区别,整型的取值就无法区分正零和负零,这对某些应用有影响。

4、历史原因

最终,为什么选择-32768而不是其他的值呢?事实上,历史原因也是在某种程度上起了一定的作用。

在计算机发展的早期,常用的字长是8位或16位,当时采用的大都是符号位为最高位的原码表示,后来发现其存在各种问题。当采用补码表示时,对于16位整数,取值范围为-32768至32767,所以沿用至今。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章