补码负数多一个的问题

来源:互联网 发布:淘宝分享到微信怎么弄 编辑:程序博客网 时间:2024/05/22 09:07

这是一个困扰我许久的问题,总是似懂非懂,负数补码表示比原码多一个,8位为-128 -- 127,32位定点整数范围为-32768 -- 32767,有几个点有点感觉:

1.负数零的原码补码相同10000000按照取反加1得到00000000,按照取模也是得到00000000所以就多了个10000000没有原码可以转换为它。

2.那为什么又将它定位负数最小值?我是这样理解的,01111111(补)的原码01111111(原)是正数最大10000001(补)的原码11111111(原)是负数最小的,和取模的规律一致,所以10000000(补)规定为负数最小或者正数最大比较合理,而最高位为1和负数格式比较一致,所以就规定为了负数最小值了吧吐舌头