#求二进制数补码
#规则:若是正数,也就是说开头符号位为0,那么补码就等于源码; 比如0110补码0110
#若是负数,也就是开头符号位为1,那么补码等于反码+1 ,比如1001补码为0110+1=0111
#若出现进位且最高位高于原来数位,那么高出部分舍去
print("请输入源码\n")
a=str(input())
ym=[]
for _ in a:
ym.append(_)
def 求反(num):
if num=='0':
return "1"
elif num=='1':
return "0"
elif num==".":
return "."
def 求补码(ym):
if ym[0]=="0":
bm=""
for _ in ym:
bm+=_
return bm
if ym[0]=='1':
fm=[]
bm=""
flag=0 #进位标记,方便反码的低位+1
i=1
for _ in ym:
fm.append(求反(_) ) #每个数位求反
while 1:
if fm[-i]=='1':
fm[-i]='0'
flag=1
i+=1
elif fm[-i]=='0':
fm[-i]='1'
flag=0
elif fm[-i]=='.':
i+=1
if flag==0:
break
for _ in fm:
bm+=_
return bm
print("这个数的补码是",求补码(ym))
用python实现补码的计算
最新推荐文章于 2024-08-14 12:00:04 发布