zoukankan      html  css  js  c++  java
  • 解释代码((n & (n-1))== 0)的含义

    思路:初步查看很难一眼分析出表达式是什么含义,我们不妨举例分析一下,假设 n = 5,二进制表示为101,那么 n-1 = 4,二进制表示为100, 5 & 4 = 101 & 100 = 100 = 4 != 0,下面我们来看更多的例子

    5 & 4 = 101 & 100 = 4
    6 & 5 = 110 & 101 = 4
    7 & 6 = 111 & 110 = 6
    8 & 7 = 1000 & 0111 = 0

    我们会发现要使表达式等于0,n-1必须使得n的n-1都向高位进1,也就是说满足一下条件:

     x + 1 = n
     x & n = 0

    我们来看看有那些数能满足要求:

    10 & 01 = 0   -------2^1
    100 & 011 = 0  -------2^2
    1000 & 0111 = 0  -------2^3
    10000 & 01111 = 0  -------2^4
    。。。。。。

    所谓代码((n & (n-1))== 0)的含义是n满足2的n次方

    这种问题一般在于考察分析和解决问题的能力。

  • 相关阅读:
    nginx 按天生成日志
    cmder
    EXCEL最大行数问题:org.apache.xmlbeans.impl.store.Saver$TextSaver.resize(Saver.java:1700)
    nginx configure 错误记录
    Flume NetCat Demo
    Flume
    hbase
    kafka安装配置
    azkaban
    sqoop
  • 原文地址:https://www.cnblogs.com/borey/p/5626183.html
Copyright © 2011-2022 走看看