负数为什么不可以用原码和反码表示?

 我来答
北友搞2865
2023-03-19 · TA获得超过138个赞
知道答主
回答量:125
采纳率:50%
帮助的人:51.7万
展开全部

由原码转换到补码,取反加一,在大部分场合,是可行的。

但是,-128 没有原码,用取反加一来求补码,就不行了。

同样,由补码求原码,也有-128 的难处。

怎么办呢?

原码反码取反加一,必须抛弃了。

-------------------------

通用的公式:负数 X 的补码 = 2^n - | X |

负数 X 的绝对值 | X |,当然就是正数了。

就是“由负数相反的数”来算出“负数的补码”。

其实,这是很简单的! 减一取反,即可。

比如: |-128 | = 1000 0000(二进制)。

减一,得:0111 1111。

取反,即:1000 1111,这就是 [-128]补!

又如: |-9 | = 0000 1001(二进制)。

减一,得:0000 1000。

取反,即:1111 0111,这就是 [-9 ]补!

--------------------------

“减一取反”,这方法,百试百灵的。

完全不需要使用“原码反码”这些不完善的码制。

而且,由已知的“负数补码”转换为“正数补码”,也可以用这个方法。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式