我们编写了2 ^ n模式(创建真值表)和输出检查的脚本。它主要用于确定电路行为。如果你有2 ^ n输入在那种情况下应该输出什么。(基于一些逻辑运算)
它工作正常直到2 ^ 16但随着复杂性增加输入从2 ^ 16增加到2 ^ 34。 所以我们需要为这么大的数字和过程数据创建真值表。
这里的问题,当我试图遍历数据但是在1天的应用程序崩溃后打印任何东西。它可能是堆栈溢出或内存错误。
我的问题是,我们能否在Python数据中存储这么大的数字。或者我们可以为这么大的数字创建真值表。(使用sympy或其他图书馆)。
一个解决方案建议我们,存储到数据库或文件中的2 ^ 34数字真值表并从数据库中读取并处理它。这样我们就可以节省生成真值表的时间。
是否可以存储如此庞大的数字。
如果我需要提供更多信息或代码段,请告诉我
#here is in_ary is :[CK,Q0,Q1......Q32]
def input_patterns(io_ary,in_ary):
Num_patterns = pow(2,34)
fn_patt = fn_patt = lambda i: i
patts = {}
i = 0
while i < Num_patterns:
i = i +1
io_patt, in_patt = [], []
while (1):
ii = fn_patt(i)
if not patts.has_key(ii):
patts[ii] = ii
break
for j in range(num_ins):
state = ii & 1
globals()[in_ary[j]] = state
in_patt.append(state)
ii = ii >> 1
if Invalid_equation and eval(Invalid_equation) & 1 == 1:
Num_patterns = Num_patterns - 1
continue # if Qualifier is false do not include this pattern
patterns.append(io_patt + in_patt)
return patterns
输出 * 这不是2 ^ 34位而是2 ^ 16 out *
<Input Pin> <output pin>
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0
答案 0 :(得分:0)
## Prints a list
import itertools
n = 5
table = list(itertools.product([0, 1], repeat=n))
print table