用编程解决数字逻辑的问题
有一道题目是这样的: F = ( AB + ~A~B) + ( CD + ~C~D ) = 1 //~代表非,~A~B即代表A非与B非A、B、C、D都只能是0或1。
求编程列出ABCD的值组合,用真值表列出。
这是我在做万恶的数字逻辑作业的时候突然想到可以借助计算机解决出来的,不过鉴于明天要交作业了,时间又晚,所以这个问题我明天再思考,现在发出来给各位鱼油试试~~~~~~
~A和~B不知道怎么表示? darren_gong 发表于 2014-9-27 22:23
~A和~B不知道怎么表示?
不是, 我的意思是利用计算机将这道题目解出来 a =
b =
c =
d =
for a_1 in a:
for b_1 in b:
for c_1 in c:
for d_1 in d:
result = ((a_1 & b_1) + (~a_1 & ~b_1)) + ((c_1 & d_1) + (~c_1 & ~d_1))
if result == 1:
print (a_1 + " " + b_1 + " " + c_1 + " "+ d_1)
很挫的一个例子,不过我也不知道这个描述对不对 /*
有一道题目是这样的: F = ( AB + ~A~B) + ( CD + ~C~D ) = 1 //~代表非,~A~B即代表A非与B非
A、B、C、D都只能是0或1。
求编程列出ABCD的值组合,用真值表列出。
*/
#include <stdio.h>
#define A(i) ((i&1) != 0)
#define B(i) ((i&2) != 0)
#define C(i) ((i&4) != 0)
#define D(i) ((i&8) != 0)
int validate(int i);
void print( int i );
int main(void) {
int i = 0;
for(;i<16;++i)
if(validate(i))
print(i);
return 0;
}
int validate(int i) {
return ((A(i)&&B(i) || !A(i)&&!B(i)) || ( C(i)&&D(i) || !C(i)&&!D(i) ));
}
void print( int i ) {
printf( "A:%d, B:%d, C:%d, D:%d \n", A(i), B(i), C(i), D(i) );
} 仰望天上的光 发表于 2014-9-29 14:01
谢谢!我要认真研究下,以后的数字逻辑作业就不用担心啦! darren_gong 发表于 2014-9-29 13:02
a =
b =
c =
没学过这种语言:shock:不清楚行不行。能运行么,结果对么 仰望天上的光 发表于 2014-9-29 14:01
开头的那四个宏定义就是列出ABCD的各种组合,可是我不知道为什么这样做就可以使各个组合完全不同呢??能不能说下为什么?
页:
[1]