来自此评论:
我的意思是如果用户输入“00000000”这是一个整数,它将变为[0,0,0,0,0,0,0,0]
我相信你想要的只是:
a = list(map(int, input("enter first byte: ")))
b = list(map(int, input("enter second byte: ")))
编辑:感谢Tadhg McDonald-Jensen的python3兼容性改变
edit2:由于你不能在列表上使用^,你可以使用这段代码:
a = input("enter first byte: ")
b = input("enter second byte: ")
def half_adder(a, b):
S = ""
c = ""
for i in range(8):
S += str(int(a[i]) ^ int(b[i]))
c += str(int(a[i]) & int(b[i]))
return (S,c)
def full_adder(a, b, c):
(s1, c1) = half_adder(a, b)
(s2, c2) = half_adder(s1, c)
return (s2, (c1 or c2))
print(full_adder(a, b, "00000000"))
答案 0 :(得分:2)
我认为这就是你所需要的:
>>> x=42
>>> list(map(int, "{:08b}".format(x)))
[0, 0, 1, 0, 1, 0, 1, 0]
格式字符串"{:08b}"
表示:将整数转换为二进制的字符串,至少8位,0填充。
答案 1 :(得分:0)
来自此评论:
我的意思是如果用户输入" 00000000"这是一个整数,它将变为[0,0,0,0,0,0,0,0]
我相信你想要的只是:
a = list(map(int, input("enter first byte: ")))
b = list(map(int, input("enter second byte: ")))
编辑:感谢Tadhg McDonald-Jensen的python3兼容性改变
edit2:由于您无法在列表中使用^,因此您可以使用此代码:
a = input("enter first byte: ")
b = input("enter second byte: ")
def half_adder(a, b):
S = ""
c = ""
for i in range(8):
S += str(int(a[i]) ^ int(b[i]))
c += str(int(a[i]) & int(b[i]))
return (S,c)
def full_adder(a, b, c):
(s1, c1) = half_adder(a, b)
(s2, c2) = half_adder(s1, c)
return (s2, (c1 or c2))
print(full_adder(a, b, "00000000"))