c语言、是已知一个负数的补码然后求原码

该负数补码为a=1111111111111101a=-[2^16-(a的补码)]2^16是换算成16位2进制来算还是什么!... 该负数补码为a=1111 1111 1111 1101
a=-[2^16-(a的补码)]
2^16是换算成16位2进制来算还是什么!
展开
 我来答
LLChina99
2012-06-15 · TA获得超过1483个赞
知道小有建树答主
回答量:574
采纳率:0%
帮助的人:526万
展开全部
【a】补=1111 1111 1111 1101,说明a是复数
2^16-(a的补码)得到的是-a,由于a为负数,-a则为正数
【补码的优点就是两个相反数相加得到0,如-1:1111 1111 1111 1111; 1: 0000 0000 0000 0001,无非是有一个进位而已,故用的2^16】
a=-[2^16-(a的补码)] 得到数的真值【就是原来的大小,不包括符号位】
2^16 就是1 0000 0000 0000 0000,即上面所讲的进位位
更多追问追答
追问
是不是2^16就是0000 0000 0000 0001 的1向前面进位16个?
然后【补码的优点就是两个相反数相加得到0,如-1:1111 1111 1111 1111; 1: 0000 0000 0000 0001,这里我没看懂、相反数相加为0?,-1:1111 1111 1111 1111;1: 0000 0000 0000 0001。是什么意思、谢谢你解答下噢!
追答
(-1) :    1111 1111 1111 1111
(+1): + 0000 0000 0000 0001
--------------------------------
1 0000 0000 0000 0000
(-2) 1111 1111 1111 1110
(+2) + 0000 0000 0000 0010
--------------------------------
1 0000 0000 0000 0000
可见,补码正负数(绝对值相反)相加,得1 0000 0000 0000 0000,这个数就是2^16,
【但数据就是低16位,低16位就是0;实际上,补码运算是不看进位位的】
冰山珀西
2012-06-15 · TA获得超过3392个赞
知道小有建树答主
回答量:1673
采纳率:0%
帮助的人:449万
展开全部
对补码求补就原码
故原码:
-((2^16-1)-a+1)

其中2^16-1是二进制数:1111 1111 1111 1111
减a后就是将a全部按位取反(包括最高位)
+1后还得把最高位换为1(在计算机内部为换为1),咱们表示的时候就是取其负值,故前面加一个‘-’
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

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

计算机中的运算,都是针对补码的。

运算结果,也是补码。

然后求原码?

求原码干嘛? 毫无意义。

用高级语言编程,你只需关心“你的数值”就行了。

至于这个“数值”的补码,是什么?

原码又是什么?

你用高级语言编程,你就不必关心了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寻风飞行
2012-06-15
知道答主
回答量:38
采纳率:0%
帮助的人:18.6万
展开全部
0000 0000 0000 0011
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式