簡體   English   中英

在真值表上填充 n 個輸入值

[英]Fill n input values on a truth table

我需要一個算法來生成大小為 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
    }
}

嘗試這個:

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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM