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

Circom LessThan模板实现疑问:核心位运算语句解析

解析Circom LessThan模板中的n2b.in <== in[0]+ (1<<n) - in[1];语句

这条语句是Circom库中n位无符号整数大小比较逻辑的核心,用来实现你需要的“y小于x输出1、x大于等于y输出0”的功能,下面拆解它的逻辑:

先明确各部分含义

  • in[0]:待比较的第一个n位整数x
  • in[1]:待比较的第二个n位整数y
  • 1<<n:等价于2^n(二进制左移n位是快速计算2的n次方的写法)
  • 整体表达式:x + 2^n - y

核心逻辑:适配Circom约束系统的非负计算

Circom的约束系统只能处理非负整数,直接计算x - y如果遇到y > x会得到负数,不符合电路要求。加2^n的作用就是把减法转化为安全的非负运算,同时通过结果的最高位状态区分大小:

  1. 当y < x时:
    x - y是正整数,加上2^n后结果为2^n + (x - y),这个数的二进制长度是n+1位,最高位(第n位)为1,剩余低位是x - y的二进制表示。
  2. 当y >= x时:
    x - y是0或负数,此时x + 2^n - y = 2^n - (y - x),结果范围在0到2^n - 1之间,二进制长度为n位,最高位(第n位)为0。

配合n2b组件输出目标结果

n2b是一个将n+1位整数拆分为二进制位数组的组件,我们只需要取它输出的最高位:

  • 最高位为1 → 对应y < x,输出1
  • 最高位为0 → 对应y >= x,输出0

完全匹配你需要的LessThan模板逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:18:14