PASCAL中一道题目求大牛解答……

PASCAL中一道题目求大牛解答……
对于十进制整数N,试求其-2进制表示.
例如,因为 1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13 ,所以(-13)_10 = (110111)_-2.
最好说一下思路,然后把负数的短除讲解一下……初学者请原谅……
mels 1年前 已收到1个回答 举报

ihihih 幼苗

共回答了14个问题采纳率:100% 举报

负数的短除其实和正数的短除是一样的.
区别只在于,负数短除后可能出现余为负的情况,而进制数中数位是不为负的.
解决这个,其实很简单,只要把它变正就好,例子如下.
如果要求-7的-2进制数,那么第一步就要用-7来除以-2,商是3,余数是-1.
那么余数为负,不符题意,我们就试着改变商,试余数变正,实际上只要把商+1即可,因为余数绝对值恒小于除数的绝对值.
也就是说,现在-7除以-2,商变成了4,余数变成了1,以此类推,-7的-2进制数就可以推出是 1001 .
对于-13也可这样转换.
总之一句话:保证余数非负!

1年前

9
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.074 s. - webmaster@yulucn.com