例如,当我给出:-2 或 -8 时,我得到 110、11000。但我想得到 10、1000,因为它必须使用最小的二进制数。所以我必须用另一种方式来处理消极的事情。我试图交换 1 和 0 直到达到 LSB 1,但我找不到方法。
(帮助你:dekadikos = demical,diadikos = binary,boith = assistant)
dekadikos = input()
while dekadikos != "end" :
dekadikos = int(dekadikos)
if dekadikos > 0 :
diadikos = bin(dekadikos)
diadikos = (diadikos[2:])
n = int(len(diadikos)) + 1
print(diadikos.zfill(n))
elif dekadikos == 0 :
diadikos = bin(dekadikos)
diadikos = (diadikos[2:])
print(diadikos)
else :
dekadikos = abs(dekadikos)
diadikos = bin(dekadikos)
diadikos = (diadikos[2:])
n = int(len(diadikos)) + 1
diadikos = diadikos.zfill(n)
boithdekadikos = 2**n - dekadikos
diadikos = bin(boithdekadikos)
diadikos = diadikos[2:]
print (diadikos)
dekadikos = input()