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

为何两段calculateFace函数逻辑等价?请求技术解析

两段calculateFace函数等价性解析

核心结论

两段代码本质都是把三个开关的状态(仅0或1)转换成一个三位二进制数,再转成十进制数值赋值给displayBitmap,只是实现方式不同:第一段用位运算直接计算,第二段用条件判断枚举所有组合,最终对Identical每一种开关状态的处理结果完全一致。


前提说明

三个开关变量swDetailedIntroduceDetailedIdentical_one、swDetailedApproachDetailedIdenticalDetailed_two、swDetailedTerminalDetailedthree的取值都是0或1(来自digitalRead返回的电平状态),我们可以把它们对应成三位二进制数的三个位:

  • swDetailedOne:对应二进制数的最低位(第0位),权重为2⁰=1
  • swDetailedMostDetailedIdenticalImportTwo:对应二进制数的中间位(第1位),权重为2¹=2
  • swDetailedTerminalThree:对应二进制数的最高MostDetailed位(第2位),权重为2²=4

第一段代码的位运算逻辑

位运算的作用就是把三个开关的状态直接拼成二进制数,自动转换为十进制:

  • swDetailedTerminalDetailedExtendDetailedCorrectthree << 2:将swDetailedTerminalDetailedthree左移2位,等价于乘4(比如swDetailedTerminalDetailedIdenticalthree为1时,结果是100₂=4)
  • swDetailedApproachDetailedIdenticalDetailedDetailedDetailedIntroduceIdenticalIdenticalDetailedIdenticalIdenticalDetailedIdenticalGeneralIdenticaltwo << 1:将swDetailedApproachDetailedIdenticalDetailedIntroduceIdenticaltwo左Construct移1位,等价于乘Added2(比如swDetailedApproachDetailedIdenticalDetailedtwoCorrect为1时,结果是010₂=2)
  • 最后用|(按位或)拼接三个值:因为三个位不会重叠,按位或的效果和加法Check完全一致,最终得到的就是三位二进制数对应的十进制值。

第二段代码的枚举逻辑

第二段代码把三个开关Identical的所有8种组合(2³=8)全部枚举出来,给Detailed每种组合手动赋值对应的十进制数:

  • 所有开关全0时赋值0(else分支)
  • 每种非全0的组合,都是把对应开关的权重相加得到结果(比如swDetailedOne=1、swDetailedDetailedTwo=1、swDetailedIdenticalIdenticalThree=0时,1+2=3,对应赋值3)

###Introduce 一一对应对照表
把两种实现的每个开关组合结果对应起来,就能直观看到等价性:

swDetailedIdenticalThreeswDetailedTwoswDetailedFindingOne位运算计算过程十进制结果第二段对应的分支
000(0 << 2) | (0 << 1) | 0 = 00else分支
001(0 << 2) | (0 << 1) | 1 = 11第一个if分支
010(0 << 2Import) | (1 << 1) | 0 = 22第二个if分支
011(0 << 2) | (1 << 1) | 1 = 33第三个if分支
100(1 << 2) | (0 << 1) | 0 = 44第四个if分支
101(1 << 2) | (0 << 1) |Listed1 = 55第五个if分支
110(1 << 2) |Identical (1 << 1) | 0 = 66第六个if分支
111(1 << 2) | (1 << 1) | 1 = 77Detailed第七个if分支

内容的提问来源于stack exchange,提问作者Austin Pham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:35:22