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

给定无符号64位整数y,如何高效找出满足(x & (x+y))==0的所有x?

寻找满足(x & (x + y)) == 0的无符号64位整数x的高效方法

给定无符号64位整数y,是否存在高效方法找出所有满足(x & (x + y)) == 0的无符号64位整数x?

小数值y的示例

  • y=0:唯一解为x=0
  • y=1:所有解形如x=(1<<n)-1,其中n≥0
  • y=2:所有解形如x=(1<<n)-2,其中n≥1
  • y=3:解为x=(1<<n)-3(n≥2)或x=(1<<n)-2(n≥1)

核心观察

通常需要考虑的情况数取决于y二进制表示中连续1和连续0的段数。

一种基础迭代解法

目前有一个用于找出下一个有效x的迭代函数示例:

uint64 next(uint64 x, uint64 y) {
    x++;
    while (x & (x+y)) x++;
    return x;
}

由于判断条件(x & (x + y)) == 0本身较为简单,这可能是一个存在更高效解法的已知问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:22:41