在一个真值 table 上填充 n 个输入值
Fill n input values on a truth table
我需要一个算法来生成大小为 n 的真值 table 的所有初始布尔值。
例如)
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");
}
我需要一个算法来生成大小为 n 的真值 table 的所有初始布尔值。
例如)
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");
}