2011年3月29日星期二

简单C语言快速计算真值表!

正在学数字逻辑的我,实在厌倦了那些纯粹推演真值表的题目,太无聊了!于是为了偷懒一下,编写了一下小程序……

The follwing code snippet is hosted on Github Gist.
#include <stdio.h>
/*本程序用来代替手工推真值表的冗繁工作*/
/*本程序在C-FREE 5 IDE环境下编译通过*/
int main(void)
{
unsigned long A,B,C,D,E,F;
A=0x0000FFFF;//00000000000000001111111111111111
B=0x00FF00FF;//00000000111111110000000011111111
C=0x0F0F0F0F;//00001111000011110000111100001111
D=0x33333333;//00110011001100110011001100110011
E=0x55555555;//01010101010101010101010101010101
/*在这里你可以定制你需要的逻辑表达式*/
/* 这里计算F(A,B,C,D,E)=(A'+B'*C*D)*(B'+C'+D*E') */
F=(~A|~B&C&D)&(~B|~C|D&~E);
printf("%x\n",F);
return 0;
}
view raw 2011032801.c hosted with ❤ by GitHub

在程序中,使用到了几个逻辑算符,取反INVERT『~』逻辑与AND『&』逻辑或OR『|』,它们跟 非『!』逻辑与『&&』逻辑或『||』的区别是,前者是对二进制操作数的每一位进行操作,而后者则是把操作数当作一个整体进行运算。
如果你如要更多或者更少的变量,或者你需要计算其他的表达式,简单地按照这个模板进行更改即可,这并不困难~
之所以选择C-FREE编程环境,是因为他比Turbo C++或者Borland C要友好的多,而且是免费的。如果你对编程环境|编译器了解不多,那建议你使用C-FREE。

1 条评论: