真实值转换成原码#反码#补码

原码 优点:容易理解、便于转换。 缺点:符号位不能参与加法运算 。
真实值对应的反码计算过程如下: 真实值为正时,反码等于原码。 真实值为负时,先求原码,保持原码符号位不变,将数字部分按位取反(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))

核心思想:将复杂的问题先分解成简单的问题,将简单问题解决后再将其拼装。

经验分享 程序员 微信小程序 职场和发展