怎么求一个负数的原码和补码?

 我来答
沙里波特
2022-01-22 · TA获得超过5248个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:631万
展开全部

补码,来自于:补数。

一般的常识:

  钟表时针,倒拨 3 小时,可以用“正拨 9 小时”来代替。

  同理,分针 倒拨 X 分,可以用 正拨 60-X 代替。

  60 是分针的周期。

十进制数,两位:0~99,周期就是一百

  -1 可以用 +99 代替。

如: 25 - 1 = 24

   25 + 99 = (1) 24

忽略进位 1 百,结果就是相同的。

那么,-1 的补数,就是 99 。

   -2 的补数,就是 98 。

   -X 的补数,就是【 周期 + 该负数 】。

--------

借助于补数,就可以用加法,代替减法运算。

所以,计算机就可以节省硬件了。

--------

八位二进制:0000 0000~1111 1111(0~255)。

周期是 256。

那么,-1 可以用 1111 1111 (+255) 代替。

即:

 -1 的补码,就是 1111 1111 (= 256-1=+255) 。

 -2 的补码,就是 1111 1110 (= 256-2=+254) 。

 。。。

 -X 的补码,就是【 周期 + 该负数 】。

 -128,就可以用 1000 0000 (= 128)代替 。  

正数,不需要变换,直接运算即可。

--------

在计算机中,负数,就是用补码存储、计算的。

原码和反码,毫无用处,它们在计算机中都不存在。

牵青芬所己
2019-06-01 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:34%
帮助的人:876万
展开全部
补码的补码就是原码!
带符号数中只有负数的原码反码和补码是不一样的,正数的这些都是一样的,涉及码制转换!
原码求补码是取反加1
补码求原码还是是取反加1(符号位除外)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

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

在计算机系统中,数值,一律采用补码表示和存储。

在计算机中,原码和反码,都是不存在的。

所以,求补码,也不必使用它们。

 

补码,是由一系列二进制码组成的。

实用的有 8 位或 16 位。高档的还有 32、64 位。

补码中的每一位,都对应一位十进制数。

要注意:最高位所对应的数值,是负数。

那么,八位的补码,各个位的数值,就是:

  128、64、32、16、8、4、2、1。

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

如果,有一个补码是:1011 1001。

它代表的数值,就是:-128 + 32 + 16 + 8 + 1 = -71。

倘若首位是 0,即为:0011 1001。

求数值,就更简单了:32 + 16 + 8 + 1 = +57。

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

掌握了上述规律,由数值,再求补码,也就很简单了。

例如,求-125 的八位补码。

  这是负数,首位一定是 1,代表了数值-128。

  与-125 相比较,还应该有个 3。

  用七位数值位表示 3,就是:000 0011。

综合在一起,-125 的补码,就是:1000 0011。

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

求补码、求数值,都是很简单的事。

并不需要拐到“原码反码取反加一符号位不变”去。

老外,这些脑子不好用的人,才会弄出哪些个骚操作!

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-11-29
展开全部
在c语言中,负数的源码是计算出来的,即先视作一个正数,将这个十进制的正数转换为二进制的数,在最高位补一个1,其余空位补0,得到源码。
一般来说正数的补码是源码本身,负数的补码是他源码除去符号位以外其他各位取反(1变0,0变1)后加1。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式