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

关于位运算实现布尔数组全组合算法的逻辑疑问

位运算生成布尔数组全组合原理解析

核心逻辑可以从以下几个维度理解:

  • 长度为n的布尔数组,全组合总数为2ⁿ,刚好对应0~2ⁿ-1范围内的所有整数,每个整数的n位二进制表示,每一位的0/1值刚好可以对应布尔数组对应位置的false/true值,所有整数的二进制位恰好覆盖了所有0/1的排列组合。
  • 关键代码(y >> x) & 1的作用拆解:
    1. 右移运算y >> x:把y的二进制表示整体向右移动x位,原本处于第x位的二进制位会被移动到最低位(第0位)的位置
    2. 按位与运算& 1:二进制的1只有最低位是1,其他位都是0,和移位后的结果做按位与运算时,只会保留最低位的数值,其余位全部清零,最终得到的结果就是y的二进制表示中第x位的原值(0或1)
    3. 判定规则:结果为1对应布尔值true,结果为0对应布尔值false,即可把y的每一位二进制值映射为布尔数组的对应位置元素。

你给出的n=2的运行示例刚好符合这个映射逻辑:

0~3的二进制分别是00、01、10、11,对应四个布尔组合:

  • 00 → [false, false]
  • 01 → [true, false]
  • 10 → [false, true]
  • 11 → [true, true]

完整逻辑链为:外层循环遍历0到2ⁿ-1的所有整数,覆盖所有n位二进制排列;内层循环遍历每个整数的每一位二进制位,通过位运算取出每一位的0/1值映射为布尔值,组装成数组,最终就得到了所有布尔数组的组合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:54:01