逻辑运算求助首先我用'&'表示与, '|'表示或有这样一个公式: (A&B)|(C&D)现在想解开这个括号, 就是求一个不带括号的算式, 而计算优先级是需要从左到右的, 也就是说如果结果是A&B|C&D, 那么就相
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 23:05:40
![逻辑运算求助首先我用'&'表示与, '|'表示或有这样一个公式: (A&B)|(C&D)现在想解开这个括号, 就是求一个不带括号的算式, 而计算优先级是需要从左到右的, 也就是说如果结果是A&B|C&D, 那么就相](/uploads/image/z/5194638-54-8.jpg?t=%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97%E6%B1%82%E5%8A%A9%E9%A6%96%E5%85%88%E6%88%91%E7%94%A8%27%26%27%E8%A1%A8%E7%A4%BA%E4%B8%8E%2C+%27%7C%27%E8%A1%A8%E7%A4%BA%E6%88%96%E6%9C%89%E8%BF%99%E6%A0%B7%E4%B8%80%E4%B8%AA%E5%85%AC%E5%BC%8F%3A+%28A%26B%29%7C%28C%26D%29%E7%8E%B0%E5%9C%A8%E6%83%B3%E8%A7%A3%E5%BC%80%E8%BF%99%E4%B8%AA%E6%8B%AC%E5%8F%B7%2C+%E5%B0%B1%E6%98%AF%E6%B1%82%E4%B8%80%E4%B8%AA%E4%B8%8D%E5%B8%A6%E6%8B%AC%E5%8F%B7%E7%9A%84%E7%AE%97%E5%BC%8F%2C+%E8%80%8C%E8%AE%A1%E7%AE%97%E4%BC%98%E5%85%88%E7%BA%A7%E6%98%AF%E9%9C%80%E8%A6%81%E4%BB%8E%E5%B7%A6%E5%88%B0%E5%8F%B3%E7%9A%84%2C+%E4%B9%9F%E5%B0%B1%E6%98%AF%E8%AF%B4%E5%A6%82%E6%9E%9C%E7%BB%93%E6%9E%9C%E6%98%AFA%26B%7CC%26D%2C+%E9%82%A3%E4%B9%88%E5%B0%B1%E7%9B%B8)
逻辑运算求助首先我用'&'表示与, '|'表示或有这样一个公式: (A&B)|(C&D)现在想解开这个括号, 就是求一个不带括号的算式, 而计算优先级是需要从左到右的, 也就是说如果结果是A&B|C&D, 那么就相
逻辑运算求助
首先我用'&'表示与, '|'表示或
有这样一个公式: (A&B)|(C&D)
现在想解开这个括号, 就是求一个不带括号的算式, 而计算优先级是需要从左到右的, 也就是说如果结果是A&B|C&D, 那么就相当于带括号的((A&B)|C)&D, 当然, 这个结果肯定是不对的.
求高人解答
逻辑运算求助首先我用'&'表示与, '|'表示或有这样一个公式: (A&B)|(C&D)现在想解开这个括号, 就是求一个不带括号的算式, 而计算优先级是需要从左到右的, 也就是说如果结果是A&B|C&D, 那么就相
一般来说,如果认为&和|两个运算的优先级相同的话,则你的问题是无解的,也就是说,无法将
(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中 .如果后缀表达式未读完,则重复上面过程,最后输出栈顶的数值则为结束.
A&B|D&C
&优先于|