int变量占16位,数的范围是-(2^15)~(2^15-1)。为什么?
大家好!这是C语言教材里的内容。在整型变量一节里,unsigned[int]所占位数是16位,相应数的范围就是0~(2^16-1)。这个我能理解,因为2进制数,最多占16...
大家好!这是C语言教材里的内容。
在整型变量一节里,unsigned [int]所占位数是16位,相应数的范围就是0~(2^16-1)。这个我能理解,因为2进制数,最多占16位,最大的就是2^16-1了。
但是int所占位数也是16位,为什么最大的数却是(2^15-1)?莫非正号也占一位?另外,最小的数不也应该是-(2^15-1)吗,为什么是-2^15呢?
想了很久,只好求助各位!多谢了!
您好!这里说的是数的大小范围,没有说数量范围吧? 展开
在整型变量一节里,unsigned [int]所占位数是16位,相应数的范围就是0~(2^16-1)。这个我能理解,因为2进制数,最多占16位,最大的就是2^16-1了。
但是int所占位数也是16位,为什么最大的数却是(2^15-1)?莫非正号也占一位?另外,最小的数不也应该是-(2^15-1)吗,为什么是-2^15呢?
想了很久,只好求助各位!多谢了!
您好!这里说的是数的大小范围,没有说数量范围吧? 展开
3个回答
展开全部
如果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~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 这也就是补码表示的特点
展开全部
int用了一位作为符号位,就把0~(2^16-1)平均分成了两份,一份用于表示正数,一份用于表示负数,内部是使用补码表示的,建议去看一下补码表示法,就明白了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我的理解是这样的:
最高位是符号位!
0算在正数里,所以,正数比负数少一个!
最高位是符号位!
0算在正数里,所以,正数比负数少一个!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询