aabbcc296
级别: 论坛先锋
精华主题: 0
发帖数量: 862 个
工控威望: 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呀?
fanuc_zgj
级别: 探索解密
精华主题: 0
发帖数量: 35 个
工控威望: 191 点
下载积分: 535 分
在线时间: 15(小时)
注册时间: 2011-11-18
最后登录: 2015-11-21
查看fanuc_zgj的 主题 / 回贴
1楼  发表于: 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) 热心助人