zoukankan      html  css  js  c++  java
  • 快速计算32位数中1的位数

    一语句实现x是否为2的若干次幂的判断

    #define is2*n(x) ((x & (x - 1))? 0 : 1)

    int main(void)

    {

    int m = 512;

    cout << ((m & (m - 1)) ? false : true) << endl;

    //即当m中只有一位为1时,才为若干次幂值

    //若有两个及以上1,则(m & (m - 1))不为0,输出0,表示不为2的若干次幂

    return(0);

    }

    类比:x为2的若干次幂即表示x中1的位数为1,题目转化为求一个32位数中1的位数,如果为1,则表示该数为2的若干次幂

    同理也可以利用此规则求一个32位数中1的位数, (m & (m - 1)每次可用消除一个1,计算的次数即为1的个数

  • 相关阅读:
    linux sed命令详解
    SQL注入基础知识
    DC-7
    DC-6
    DC-5
    DC-4
    DC-3
    DC-2
    pentestlabs
    任意文件读取和下载
  • 原文地址:https://www.cnblogs.com/xmphoenix/p/2257704.html
Copyright © 2011-2022 走看看