我收到以下提示:
创建一个函数: BoolAdd(A,B) 对布尔值的列表 A 和 B(A 和 B 具有相同的长度 N)执行二进制加法并返回两个元素的列表。第一个元素是溢出,这意味着它以 FALSE 值返回,除非加法不适合与 A 和 B 最初相同的长度列表。输出列表的第二个元素是一个布尔值列表,对应于 A 和 B 的向量和。确保定义了 BOOL_ADD,这样无论为 N 选择的值如何,它都能正常工作。
我不确定如何执行二进制加法,然后将其转换为布尔值。我也不确定何时将溢出更改为 TRUE。在问题的前面,我们编写了以下 HalfAdder 函数:
def HalfAdder(A,B):
S = int((A and not B) or (not A and B))
C = int(A and B)
return (S, C)
和 FullAdder 函数:
def FullAdder(A,B,C):
AB = int((A and not B) or (not A and B))
S = int((C and not AB) or (not C and AB))
CAB = int(C and AB)
C1 = int((A and B) or (CAB))
return (S,C1)
是否会合并其中任何一个?
这是我到目前为止所拥有的,但它没有解决:
def BoolAdd(A,B):
L = []
overflow = False
for i in range (0,len(A)):
x = bin(A[i]+B[i])
x = bool(x)
L.append(x)
if (len(L) > len(A)):
overflow = True
return [overflow, L]
关于我做错了什么或如何解决这个问题的任何想法?