计算机计算补码时按位取反要不要算上符号位

 我来答
蔚天灿雨
2019-11-14 · TA获得超过389个赞
知道答主
回答量:28
采纳率:66%
帮助的人:8541
展开全部
1.对于原码转换为补码是不算符号位的(我猜你问的就是这个)

不相信的话可以给你举个例子证明一下:

不妨取一个4-bit register,规定最高位为符号位,对于-1原码表示为1001;

对于补码,按位取反,末位+1

①假设符号位参与取反,那么补码为0111(按位取反得0110,末位+1得0111)。

此时符号位不是1,而是0,代表正数,显然错误。

其实对于补码,最高位符号位对应的权值是-8,所以0111真正代表数字为

-8*0 + 4*1 + 2*1 + 1*1 = +7

②假设符号位不参与取反,那么符号位不参与运算,补码为1111(按位取反得1110,末位+1得1111)。

结果为 -8*1 + 4*1 + 2*1 + 1*1 = -1

对于原码,最高位权值是-1(所以常常理解为就是一个负号),但是对于补码最高位权值是-2^n(不仅仅是一个负号)

2.对于补码表示的数字求相反数(相反数仍以补码形式表示),符号位是参与的。
举个例子:2-bit Register
-1补码表示为 11
求-1的相反数:每位都取反,末位+1得到-1相反数为01,即+1
如有错误,欢迎指出。

HITWH ---LEVI
沙里波特
2021-03-14 · TA获得超过5250个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:636万
展开全部

在计算机中,并没有 " 计算补码 " 时按位取反... 这种事。

 " 计算补码 " 时按位取反...,

--这是由“人工操作”的,和计算机毫无关系。

因为:

计算机中的有符号数,都是用补码存放的。

计算机中,只有补码,并无原码反码。

计算机对补码,进行加减运算时,是把全部的位,都当做数据,根本就不考虑什么符号位。 

符号位,原码反码,都是骗人的,在计算机里面,根本就没有这些东西。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
641038654

2016-12-12 · TA获得超过10.9万个赞
知道顶级答主
回答量:7.1万
采纳率:88%
帮助的人:7528万
展开全部
  • 补码

  • 计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

  • 在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
瑞杉宋5
2016-12-12 · TA获得超过461个赞
知道小有建树答主
回答量:132
采纳率:100%
帮助的人:111万
展开全部
不要算上符号位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

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

当 X < 0,其补码定义式如下:

  [ X ]补 = 2^n -| X |, n 是补码的位数。

如,求-5 的八位补码。

[-5]补 = 2^8 -|-5 |

   = 256 -5

   = 251

   = 1111 1011 (二进制)

由定义式,你也可以看出:

  求补码时,是用“X 的绝对值”来计算的。

  负数的绝对值,当然就是个“正数”。

即:求负数的补码,要用其正数来计算。

所以,你也可以如下计算:

+5 = 0000 0101,这就是 +5 的补码。

减一:0000 0100。

取反:1111 1011。这就是-5 的补码。

求补码,根本就不用原码反码符号位。

你只要按照上述方法,简单计算一下,就完了。

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式