首页 新闻 会员 周边 捐助

int 形的整数的取值范围为什么是-32768-32767而不是-32767-32767

0
[待解决问题]
对于有符号的整数,用补码表示的话,比如说8位(即char,BYTE类型的),最高位是符号位,下面7位用来表示数据.
那么,表示正数的话,表示的范围为00000001-01111111,也就是说,8位表示正数,最高只能是127,最高是符号位嘛,是不能用的.
表示0:00000000
下面表示负数,相信你应该知道表示的方法,即补码是原码取反加1,听起来有点复杂,算起来更不简单,其实是这样的:CPU的加减法运算,其实是循环进行加减的,即当其由00000000加到11111111时,如果再加1,就又会为00000000了,只不过溢出寄存器会置位的.而当其由00000001减1,即为00000000,如果再减1,就会为11111111,这是什么?不就是-1吗?其实就是说:以十进制数来说,1-1=0,0-1=-1,这是显然的,再减?那就减吧.那么,从00000000可以减到什么时候呢?当然是不能与正数的补码重合就行了,所以可以从11111111-10000000,即从-1到-128.
所以,整个范围是-128~127.16位的,32位的,同理
iamdanger的主页 iamdanger | 菜鸟二级 | 园豆:202
提问于:2012-07-13 23:31
< >
分享
所有回答(2)
0

这个问题我是这样想的, -32767-32767 这个区间内有奇数个数,而32位的二进制数只能表示偶数个数,所以-32767-32767不对

diplomacy | 园豆:208 (菜鸟二级) | 2012-09-06 09:01
0

111111111111111-100000000000000-000000000000000-011111111111111

         -32767    ----------   -0    ----------  0    ----------  32767

多的一个-0没用,有一个0表示0就够了,所以把-0人为规定成-32768。为什么选-0,不选0?因为是人为规定的,那个人肯定看-0不顺眼。

深l度z | 园豆:202 (菜鸟二级) | 2015-05-13 22:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册