逻辑运算求助
题目
0
答案
一般来说,如果认为&和|两个运算的优先级相同的话,则你的问题是无解的,也就是说,无法将
(A&B)|(C&D)转换为不带括号的形式.
当然,有两种方式可以转换该问题,
1.定义&和|的优先级,
1.1 如果认为&的优先级高,则可以直接将上面表达式的括号去掉
1.2 如果认为|优先级高.则根据公式 (X&Y)|Z = (X|Z) & (Y|Z),上面表达式可以化为
A|C & B|C & A|D & B|D
另外一种形式是使用后缀表达式.这个可以上网搜一下,一般计算机计算时,都会先转换为后缀表达式,将括号删除.比如(2 + 1) * 3 ,其后缀表达式为:2 1 + 3 *
(A&B)|(C&D)的后缀表达式为AB&CD&|,实际上编译器在计算复杂表达式时,就是将所有表达式都转换为了后缀表达式在生成机器码的.
运用后缀表达式进行计算的具体做法:
建立一个栈S .从左到右读后缀表达式,如果读到操作数就将它压入栈S中,如果读到n元运算符(即需要参数个数为n的运算符)则取出由栈顶向下的n项按操作符运算,再将运算的结果代替原栈顶的n项,压入栈S中 .如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束.
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
最新试题
热门考点