c语言、是已知一个负数的补码然后求原码
该负数补码为a=1111111111111101a=-[2^16-(a的补码)]2^16是换算成16位2进制来算还是什么!...
该负数补码为a=1111 1111 1111 1101
a=-[2^16-(a的补码)]
2^16是换算成16位2进制来算还是什么! 展开
a=-[2^16-(a的补码)]
2^16是换算成16位2进制来算还是什么! 展开
4个回答
展开全部
【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-(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;实际上,补码运算是不看进位位的】
展开全部
对补码求补就原码
故原码:
-((2^16-1)-a+1)
其中2^16-1是二进制数:1111 1111 1111 1111
减a后就是将a全部按位取反(包括最高位)
+1后还得把最高位换为1(在计算机内部为换为1),咱们表示的时候就是取其负值,故前面加一个‘-’
故原码:
-((2^16-1)-a+1)
其中2^16-1是二进制数:1111 1111 1111 1111
减a后就是将a全部按位取反(包括最高位)
+1后还得把最高位换为1(在计算机内部为换为1),咱们表示的时候就是取其负值,故前面加一个‘-’
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算机中的运算,都是针对补码的。
运算结果,也是补码。
然后求原码?
求原码干嘛? 毫无意义。
用高级语言编程,你只需关心“你的数值”就行了。
至于这个“数值”的补码,是什么?
原码又是什么?
你用高级语言编程,你就不必关心了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0000 0000 0000 0011
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询