aabbcc296
级别: 论坛先锋
精华主题: 0
发帖数量: 863 个
工控威望: 1255 点
下载积分: 6053 分
在线时间: 607(小时)
注册时间: 2009-03-07
最后登录: 2020-11-25
查看aabbcc296的 主题 / 回贴
楼主  发表于: 2011-11-18 12:17
请教:16位整数的负数最小怎么是-32768?  最高位为0时为正数,为1时为负数。如果是最小的负数,二进制表示为       1111   1111   1111   1111,应为—32767呀!
书上说整数用补码来表示,补码是什么意思啊?
怎么表示负数呀?1000   0000   0000    1010是不是就是—6呀?
0000   0000   0000    1010是不是就是6呀?
ymmfa
不想大江大河,不想浪起潮落,只愿一湾小湖,静待岁月安好。
级别: 管理员

精华主题: 8 篇
发帖数量: 9665 个
工控威望: 8556 点
下载积分: 16673 分
在线时间: 5323(小时)
注册时间: 2006-08-10
最后登录: 2024-11-18
查看ymmfa的 主题 / 回贴
1楼  发表于: 2011-11-18 13:03
我记得有些东西,16位正的上限是32767,如果再大,就变成-32768了。
本帖最近评分记录:
  • 下载积分:+2(aabbcc296) 热心助人
  • 特别提醒大家:
    偶尔修改下自己的密码,以防被盗
    不要在多个网站都用一样账号密码
    偶尔还是要发发贴,回回贴,不要总潜水
    fanuc_zgj
    级别: 探索解密
    精华主题: 0
    发帖数量: 35 个
    工控威望: 191 点
    下载积分: 535 分
    在线时间: 15(小时)
    注册时间: 2011-11-18
    最后登录: 2015-11-21
    查看fanuc_zgj的 主题 / 回贴
    2楼  发表于: 2011-11-18 13:38
    负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。
    采用补码表示时,16位整数的负数最小数就是-32768,而正数最大数是32767;

    16位原码表示的整个数据区间为:【-32767——  -0,+0 ——32767】
    16位补码表示的整个数据区间为:【-32768——0——32767】
    请注意这两种码表示的个数总数是一样的,但补码表示的数据却是唯一的;

    [1111  1111  1111  1111] 原码表示时确为-32767,但当采用补码表示时,规定由-32768由于代替了-0(为了确保整个数据区间只有一个0,而不是一个+0和一个-0),因而它也就没有了原码和反码。
    本帖最近评分记录:
  • 下载积分:+5(aabbcc296) 热心助人