为什么二进制数的补码等于按位取反再加1

 我来答
做而论道
高能答主

2023-02-22 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部

哪有什么“按位取反加一”!

-128,并没有原码和反码,拿什么取反呢?拿什么加一?

补码,就是补码,与原码反码符号位,并无任何关系。

求补码,有它自己的“补码定义式”:

 当 X >= 0,  [ X ]补 =  X;     零和正数不用变换。

 当 X < 0,  [ X ]补 =  X + 2^n。 n 是补码的位数。

这是通用的公式。 一般的书上,都有这种公式,去翻翻书吧。

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

如果说“取反加一”,就应该是【绝对值取反加一】!

下面用 4 位二进制数来说明。

假设一个负的二进制数是:X =-xxxx。

其中的 xxxx,是二进制的绝对值,这就是一个正数。

按公式,[ X ]补 =  X  +  2^4,

二进制就是:  = -xxxx + 1 0000。

式中的 1 0000,可以写成:1111 + 1。

代入后,[ X ]补 = 1111-xxxx + 1。

式中的 1111-xxxx:

  如果 x 是 0, 1-x 就是 1。

  如果 x 是 1, 1-x 就是 0。

  所以,1111-xxxx,就是【对绝对值取反】。

式中的 + 1:

  就是在取反之后,再加上 1。

因此, X 的补码就是:【对绝对值取反、加一】。

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

在这里,既没有用原码,也没有用反码。更没有“符号位不变”。

所以,求补码,与“原码、反码和符号位”没有任何关系。

其实,原码反码符号位,都是无用的。

特别是-128,它根本就没有原码和反码!

只有用【对绝对值取反加一】,才能求出-128 的补码。

那么,书上,总是讲“原码反码符号位”,有什么意思呢?

真是怪事。

机器1718
2022-06-14 · TA获得超过6842个赞
知道小有建树答主
回答量:2805
采纳率:99%
帮助的人:162万
展开全部

昨天聊到了补码的问题:在4进制中,原码1的补码是3。减去原码和加上补码的结果是一样的。大学时候,对于二进制数,求补码有个口诀: 按位取反再加一

为什么呢?还是以4进制为例,为了直观起见,还是先把图贴上。

补码又可以表示为 进制能表达的最大数减去原码再加一 ,对于二进制表现形式能表达的最大数(不考虑负数)是多少? 3 。写成2进制是11。

因为3的每一位都是1,所以减去另一个数字时,跟取反的结果是一样的。剩下的例子也就不再赘述了。

还有一个在已知补码的情况下,还有一个获得原码的口诀叫: 按位取反再加一

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式