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

验证‘寻找同权重最邻近整数’问题的Python解法是否正确

代码正确性验证

你的实现代码是正确的,下面拆解逻辑并验证核心场景:

代码逻辑拆解

  1. 步骤1:k2 = x ^ (x >> 1)
    将x与右移一位的自身异或,结果中二进制位为1的位置,对应原数x中相邻两位不同的位置。
  2. 步骤2:k2 &= ~(k2 - 1)
    提取k2中最右侧的1,这一步的作用是定位原数x中最右边的一对相邻不同位。
  3. 步骤3:return x ^ (k2 << 1 | k2)
    k2 << 1 | k2等价于k2 * 3,即把最右侧的那对相邻位同时置为1;与x异或后,这对相邻位会被翻转(0变1、1变0),实现了相邻不同位的交换——既保证了二进制中1的数量(权重)不变,又因为交换的是最右侧的可调整位,所以得到的y与x的差值最小。

核心测试场景验证

  • 测试用例1:x=6(二进制110)
    计算后得到y=5(二进制101),权重均为2,差值为1(最小可能)。
  • 测试用例2:x=5(二进制101)
    计算后得到y=6(二进制110),权重均为2,差值为1(最小可能)。
  • 测试用例3:x=7(二进制111)
    计算后得到y=11(二进制1011),权重均为3,差值为4,这是比14(差值7)更小的符合要求的数。
  • 测试用例4:x=1(二进制01)
    计算后得到y=2(二进制10),权重均为1,差值为1(最小可能)。

所有测试场景均符合要求,说明代码逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 04:55:27