matengfei
攻人之过勿太严,要思其堪受;教人以善勿过高,要令其可从。
级别: 论坛先锋
精华主题: 0
发帖数量: 737 个
工控威望: 1054 点
下载积分: 2482 分
在线时间: 207(小时)
注册时间: 2011-08-07
最后登录: 2017-06-10
查看matengfei的 主题 / 回贴
楼主  发表于: 2013-07-30 15:50
有符号字的取值范围-32768~32767,一个字由16个位(b0-b15)组成,最高位为符号位:如果为0则表示正数;如果为1则表示负数。
除去最高位的b0-b14位,如果低b0-b14位都为1,则b0-b14位和为2的15次方减1,等于32767.     加上符号位(最高位).
那么有符号字的取值范围应该为-32767~32767。为什么是-32768~32767呢?

sanlihu
吉圆
级别: 论坛先锋
精华主题: 0
发帖数量: 1189 个
工控威望: 1734 点
下载积分: 7546 分
在线时间: 576(小时)
注册时间: 2012-08-31
最后登录: 2024-10-28
查看sanlihu的 主题 / 回贴
1楼  发表于: 2013-07-31 11:59
计算机是工具,我们发明它,就可规定它的一切。
b15b14........b1b0连续16个位可存放0000000000000000到1111111111111111个状态。
人为规定:最高位b15是表示这个数的符号=0表示它是一个正数。=1表示它是个负数。
这样,16个连续0表示+0,0000000000000000=+0正数最小数
            0000000000000001=+1
            ..............................................
            0111111111111110=+32766
            0111111111111111=+32767正数最大数
 正数最大数加1变成:1000000000000000此时我们的规定它表示一个负数,它表示多少暂不管。
     再加"1"变成:1000000000000001,它是+32767按位求反再加1的结果。规定它表示-32767。
                     .......................................
                                           1111111111111110=-2
                                           1111111111111111=-1 (1000000000000000=-32768就好理解了)
计算机思想非常符合中国古人的哲学观点。比正的最大数大1的数就是负的最大数了。 
吉圆电气 QQ751673698