创建模式2 ^ 34并存储数据

时间:2014-03-21 04:40:47

标签: python database python-2.7 sympy

我们编写了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

1 个答案:

答案 0 :(得分:0)

## Prints a list 
import itertools
n = 5
table = list(itertools.product([0, 1], repeat=n))
print table