本关任务是实现ZhenToYuan(z)
函数,其功能是将给定的真实值z
转换成 8 位原码,说明如下:
1)参数z
是长度不超过 8 的字符串,表示的是−1111111到+1111111之间的一个二进制整数;
2)z
对应的真实值的符号可能是+
或-
,也可能没有,如没有,表示是正数,如'-1001'
、'+101'
、'101'
都是z
可能的取值;
3)函数的返回值是字符串类型,表示真实值z
对应的 8 位原码;
4)为方便理解,本关使用的函数名和变量名大多采用拼音形式,如ZhenToYuan(z)
中,“Zhen”表示“真实值”、“Yuan”表示“原码”、变量z
是“真实值”的首个拼音,后续关卡类似,不再复述。
- [+101]原=00000101
- [−1010]原=10001010
- [+0]原=00000000
- [−0]原=10000000
转换符号位:
将真实值的正负号数值化,
真实值为正数,符号部位为0;
真实值为负数,符号部位为1。
填入数字部分:
将真实值填入原码中。
补 0:
看是多少位的编码,在符号位与真实值之间补0,有多少空位补多少0。
N = 8 #位数为8
########## Begin ##########
def ZhenToYuan(z):if '-'in z:zplace('-','')f='1'+'0'*(N-len(z)-1)+zelse:zplace('+','')f='0'+'0'*(N-len(z)-1)+zreturn f
########## End ##########
z = input() #真实值
y = ZhenToYuan(z) #转换成8位原码
print('%s -> %s' % (z, y))
if '-'in z:zplace('-','')f='1'+'0'*(N-len(z)-1)+z
if '+'in z: zplace('+','')f='0'+'0'*(N-len(z)-1)+z
测试的时候遇到了一个101,无法检验,出现了报错。
本文发布于:2024-01-28 18:53:12,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064391969526.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |