You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何化简CS课程中给定的长布尔表达式?

布尔表达式化简推导
  • 已知变量定义:
    double x;
    double y;
    
  • 原始待化简布尔表达式:
    boolean b = ( (y < -x) ^ (5 * x >= y) ) && ( (x < -y) != (x >= y * 0.2) );
    

推导步骤

  1. 首先明确布尔运算基础等价规则:对于任意两个布尔值P、Q,P ^ Q(异或运算)和P != Q(不等于判断)的运算结果完全一致,二者可等价替换。
  2. 做不等式等价变形:
    • 对y < -x移项可得x + y < 0,对x < -y移项同样可得x + y < 0,因此(y < -x)和(x < -y)完全等价。
    • 对x >= y * 0.2两边同时乘以正数5,不等号方向不变,可得5 * x >= y,因此(x >= y * 0.2)和(5 * x >= y)完全等价。
  3. 对原表达式做等价替换,替换后表达式为:
    boolean b = ( (y < -x) ^ (5 * x >= y) ) && ( (y < -x) != (5 * x >= y) );
    
  4. 再将第二个括号的!=替换为等价的^,表达式变为:
    boolean b = ( (y < -x) ^ (5 * x >= y) ) && ( (y < -x) ^ (5 * x >= y) );
    
  5. 任意布尔值和自身做&&运算,结果等于其本身,因此最终化简结果为:
    boolean b = (y < -x) ^ (5 * x >= y);
    

注:以上等价性默认x、y均为非NaN的double值,CS课程常规习题默认不涉及NaN边界场景,若有特殊需求需额外判断

可选等价写法

可根据使用场景替换为其他等价形式:

  • 用不等于替代异或,可读性更强:
    boolean b = (y < -x) != (5 * x >= y);
    
  • 用另一组等价不等式编写:
    boolean b = (x < -y) ^ (x >= y * 0.2);
    

内容的提问来源于stack exchange,提问作者Kittanat Assawakiattikun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:15:03