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

如何从数学上证明‘i & (i - 1) == 0’等价于正整数i是2的幂?

证明i & (i - 1) == 0是正整数i为2的幂的充分条件

先明确两个前置规则:

  • 正整数的二进制表示:任何正整数都能写成二进制形式,每一位对应2的幂次,1代表该幂次被包含,0代表不包含。
  • 按位与(&)运算规则:只有当两个数的对应二进制位同时为1时,结果的该位才是1,其余情况为0。

充分性证明(若i & (i - 1) == 0,则i是2的幂)

用反证法推导:
假设存在正整数i,满足i & (i - 1) == 0,但i不是2的幂。

因为i不是2的幂,它的二进制表示里至少有两个1(2的幂的二进制只有最高位是1,其余全为0)。比如i的二进制是...1x...1(x代表任意数量的0或1,至少有两个1)。

当计算i-1时,二进制会发生这样的变化:从最右边的1开始,把这个1翻转为0,同时它右边所有的0都翻转为1。比如i是1010(十进制10),i-1就是1001。

由于i的二进制里至少有两个1,最右边的1被翻转后,它左边的那个1不会被减1操作影响,仍然是1。这时候i和i-1的二进制中,左边的这个1的位置上,两者都是1,按位与的结果在该位就是1——也就是说i & (i - 1)的结果至少有一位是1,不可能等于0。

这和我们的假设i & (i - 1) == 0矛盾,因此假设不成立。结论:满足i & (i - 1) == 0的正整数i一定是2的幂。

补充:必要性验证(若i是2的幂,则i & (i - 1) == 0)

如果i是2的幂,它的二进制是100...0(只有最高位为1),那么i-1的二进制就是011...1(最高位为0,其余全为1)。两者按位与时,每一位都没有同时为1的情况,结果必然是0,这部分很好理解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 13:10:03