【发布时间】:2012-10-17 06:19:37
【问题描述】:
我收到以下提示:
创建一个函数: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]
关于我做错了什么或如何解决这个问题的任何想法?
【问题讨论】: