PASCAL中一道题目求大牛解答……
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 23:34:38
PASCAL中一道题目求大牛解答……
对于十进制整数N,试求其-2进制表示.
例如,因为 1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13 ,所以(-13)_10 = (110111)_-2.
最好说一下思路,然后把负数的短除讲解一下……初学者请原谅……
对于十进制整数N,试求其-2进制表示.
例如,因为 1*1 + 1*-2 + 1*4 + 0*-8 +1*16 + 1*-32 = -13 ,所以(-13)_10 = (110111)_-2.
最好说一下思路,然后把负数的短除讲解一下……初学者请原谅……
负数的短除其实和正数的短除是一样的.
区别只在于,负数短除后可能出现余为负的情况,而进制数中数位是不为负的.
解决这个,其实很简单,只要把它变正就好,例子如下.
如果要求-7的-2进制数,那么第一步就要用-7来除以-2,商是3,余数是-1.
那么余数为负,不符题意,我们就试着改变商,试余数变正,实际上只要把商+1即可,因为余数绝对值恒小于除数的绝对值.
也就是说,现在-7除以-2,商变成了4,余数变成了1,以此类推,-7的-2进制数就可以推出是 1001 .
对于-13也可这样转换.
总之一句话:保证余数非负!
区别只在于,负数短除后可能出现余为负的情况,而进制数中数位是不为负的.
解决这个,其实很简单,只要把它变正就好,例子如下.
如果要求-7的-2进制数,那么第一步就要用-7来除以-2,商是3,余数是-1.
那么余数为负,不符题意,我们就试着改变商,试余数变正,实际上只要把商+1即可,因为余数绝对值恒小于除数的绝对值.
也就是说,现在-7除以-2,商变成了4,余数变成了1,以此类推,-7的-2进制数就可以推出是 1001 .
对于-13也可这样转换.
总之一句话:保证余数非负!