int变量占16位,数的范围是-(2^15)~(2^15-1)。为什么?

来源:百度知道 编辑:UC知道 时间:2024/05/05 01:24:54
大家好!这是C语言教材里的内容。
在整型变量一节里,unsigned [int]所占位数是16位,相应数的范围就是0~(2^16-1)。这个我能理解,因为2进制数,最多占16位,最大的就是2^16-1了。
但是int所占位数也是16位,为什么最大的数却是(2^15-1)?莫非正号也占一位?另外,最小的数不也应该是-(2^15-1)吗,为什么是-2^15呢?
想了很久,只好求助各位!多谢了!
您好!这里说的是数的大小范围,没有说数量范围吧?

int用了一位作为符号位,就把0~(2^16-1)平均分成了两份,一份用于表示正数,一份用于表示负数,内部是使用补码表示的,建议去看一下补码表示法,就明白了

如果int型占用16位的话 可以肯定的是 最多能表示 2^16 个数
如果是无符号行 0~2^16-1 正好是2^16个

如果有符号型 如果第一位为0 表示正数 那么最多只能表示出2^15个数 再加上一个零的话 那么它的范围就是0~2^15-1
如果第一位为1 表示负数 它的范围也应该是2^15 所取的范围是-2^15~-1

需要注意的是 当第一位为0时 其它15个也为0是 表示 0
当第一位为1时 其它15个也为0时 表示 -2^15 这也就是补码表示的特点

我的理解是这样的:
最高位是符号位!
0算在正数里,所以,正数比负数少一个!

在turbo c中 Int型变量的取值范围是怎样计算出来的? 将一个long int型数据赋给一个int型变量,要进行数值位截取,由于数据范围的变化出现的数据错误有哪些? 为什么int变量的范围是-2的15次方到2的15次方-1,是怎么计算出来的! 什么是64位系统,和32位有什么区别,在64位下一个int型和char型变量占多少字节 32位浮点数范围的求法 保存最大不超过9位的整数为什么不能使用int类型变量?应该采用什么类型的变量呢? 判断INT类型变量N是否为两位整数的逻辑表达式为 float型变量有效数字是7位,为什么int=23转换成float型为23.000000? 在不同位的计算机中,一个int型数据所占的内存长度的字节是不一样的么?为什么? 在C语言中,怎么判断一个变量是int型的还是char型的?