【问题标题】:Fill n input values on a truth table在真值表上填充 n 个输入值
【发布时间】:2019-11-30 16:26:31
【问题描述】:

我需要一种算法来生成大小为 n 的真值表的所有初始布尔值。

例如)

Size = 1: 1)T F
Size = 2: 1)T T F F  2)T F T F
Size = n: ?

格式现在并不重要,但理想的格式是:

for(int i = 0; i<n; i++){
   //do something 
}

我的最终目标是对所有可能值的布尔电路进行完整测试。该电路已正确实现,但我需要一种方法来测试需要 n 个输入的电路上的所有输入排列。所以结束函数看起来像:

static void completeTest(Circuit *circuit){
    double num_inputs = getNumInputs(circuit);
    double perm = pow(2,num_inputs);
    for(int i = 0; i<perm; i++){
       //do something
    }
}

【问题讨论】:

    标签: c logic boolean-logic circuit


    【解决方案1】:

    试试这个:

    char values[] = {'F', 'T'};
    unsigned long long perm = 1ULL << n;
    for (unsigned long long i = 0; i < perm; i++) {
        for (unsigned int j = 0; j < n; j++) {
            printf("%c",values[(i >> j) & 1]);
        }
        printf("\n");
    }
    

    【讨论】:

    • 哦,很有帮助,谢谢。有什么地方可以让我了解更多关于该算法的信息吗?
    • @AidanGoldfarb:这算不上什么算法。我只是迭代这些位并输出 'F' 为 0 和 'T' 为 1。
    猜你喜欢
    • 2021-01-27
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多