zoukankan      html  css  js  c++  java
  • 【程序员面试宝典读书笔记】n&(n-1)

    n&(n-1)是我在看《程序员面试宝典》时看到的。

    &:在这里代表按位与,表示参加运算的两个数据,按二进制位进行“与”运算。

    n&(n-1)的作用:将n的二进制位中最低位的1改为0。

    举个例子:设n=(1100)(二进制),则n-1=(1011)(二进制),n&(n-1)=(1000)(二进制),原来最低位的1变成了0。

    以下是n&(n-1)的应用:

    1、求某个数的二进制表示中1的个数

    int fun(int x)
    {
        int count=0;
        while(x)
        {
            count++;
            x&=(x-1);
        }
        return count;
    }

    2、判断一个数是否是2的幂次方

    n>0&&(n&(n-1))==0

    2的幂次方在计算机中用二进制表示是这样的数:只在某一位是1,其余各位都为0,如2=(0010)(二进制),8=(1000)(二进制),因此(n&(n-1))==0是2的幂次方的必要条件。但当n是0时,也满足(n&(n-1))==0,因此需要设定n>0。


  • 相关阅读:
    LeNet && ModernCNN
    Fundamentals of Convolutional Neural Networks
    机器及其相关技术介绍
    学而后思,方能发展;思而立行,终将卓越
    贪心的区间问题
    基环树
    模板类
    存储问题
    大佬们的技巧
    exgcd
  • 原文地址:https://www.cnblogs.com/ruan875417/p/4495587.html
Copyright © 2011-2022 走看看