真实值转换成原码#反码#补码
原码 优点:容易理解、便于转换。 缺点:符号位不能参与加法运算 。
真实值对应的反码计算过程如下: 真实值为正时,反码等于原码。 真实值为负时,先求原码,保持原码符号位不变,将数字部分按位取反(1 变 0、0 变 1),即得反码。
真实值对应的补码计算过程如下: 真实值为正时,补码等于原码。 真实值为负时,反码加 1 即得补码,也就是将原码的数字部分按位取反后再加 1。
任务
本关任务是实现ZhenToFan(z)函数,其功能是将给定的真实值z转换成 8 位反码,参数和返回值要求与上关相同,即: 1)参数z是长度不超过 8 的字符串,表示的是一个二进制整数; 2)z对应的真实值的符号可能是+或-,也可能没有,如没有,表示是正数,如-1001、+101、101都是z可能的取值; 3)函数的返回值是字符串类型,表示真实值z对应的 8 位反码。
N = 8 #位数为8 ########## Begin ########## def ZhenToYuan(z): if z[0] not in [+, -]: z=+ + z y=0 if (z[0]==+) else 1 y=y+0*(N-len(z)) y=y+z[1:len(z)] return y def reverse(y): f=y[0] for x in y[1:len(y)]: if x==1: f=f+0 else: f=f+1 return f def ZhenToFan(z): y=ZhenToYuan(z) if y[0]==0: return y else: return reverse(y) ########## End ########## z = input() #真实值 f = ZhenToFan(z) #转换成8位反码 print(%s -> %s % (z, f))
核心思想:将复杂的问题先分解成简单的问题,将简单问题解决后再将其拼装。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
写代码过程中的冗余处理