zoukankan      html  css  js  c++  java
  • C++ 遇见的一些函数

    1.位与(&)操作,计算十进制数中的为“1”的位数

    int cnt_one(int k)
    {
        int c = 0;        //保存位为"1"的数量
        while (k) {
            k = k&(k - 1);        //这样就能实现求出位为"1"的个数
            c++;
        }
        return c;
    }

    PS:关于位的操作补充:C++ bitset类

    (1)bitset定义及初始化

    bitset<32> bitvar; //32位,全为0。

    (2)bitset操作(bitset<32> bitvec; // 32 bits, all zero

    bitset操作
    b.any() b中是否存在置为1的二进制位?    bool is_set = bitvec.any();            // false, all bits are zero
    b.none() b中不存在置为1的二进制位吗?    bool is_not_set = bitvec.none();      // true, all bits are zero
    b.count() b中置为1的二进制位的个数      size_t bits_set = bitvec.count(); // returns number of bits that are on返回二进制位中为“1”的数量
    b.size() b中二进制位的个数           size_t sz = bitvec.size(); // returns 32
    b[pos] 访问b中在pos处的二进制位  for (int index = 0; index != 32; index += 2)  bitvec[index] = 1;把bitvec中的偶数下标的位都置为1
    b.test(pos)   b中在pos处的二进制位是否为1?   if (bitvec.test(i))    bitvec[i] is on    //测试某个二进制位是否为“1”
    b.set() b中所有二进制位都置为1 bitvec.set();    // set all the bits to 1  for (int index = 0; index != 32; index += 2)   bitvec.set(index);    //设置二进制位的值
    b.set(pos)     
    b中在pos处的二进制位置为1    
    b.reset() b中所有二进制位都置为0      bitvec.reset();    // set all the bits to 0
    b.reset(pos) b中在pos处的二进制位置为0
    b.flip() b中所有二进制位逐位取反      bitvec.flip();    // reverses value of all bits
    b.flip(pos) b中在pos处的二进制位取反      bitvec.flip(0);   // reverses value of first bit
    b.to_ulong() b中同样的二进制位返回一个unsigned long值
    os << b

    b中的位集输出到os流    bitset<32> bitvec2(0xffff); // bits 0 ... 15 are set to 1; 16 ... 31 are 0     cout << "bitvec2: " << bitvec2 << endl;

    result:    bitvec2: 00000000000000001111111111111111

  • 相关阅读:
    spring使用中ModelAttribute的内容被覆盖
    html中,纯数字或纯英文的一串字符超出父容器不会折行显示,如何解决?
    js实现刷新页面出现随机背景图
    为tomcat配置项目必须的引擎文件
    mysql如何出查出最近7天,最近30天,最近n天的记录?
    为了显示此页面,Firefox 必须发送将重复此前动作的数据(例如搜索或者下订单)
    git 恢复到旧版本命令
    七大经典排序算法总结(C语言描述)
    C语言描述栈的实现及操作(链表实现)
    C语言的文件读写操作函数小结
  • 原文地址:https://www.cnblogs.com/runningRain/p/5935949.html
Copyright © 2011-2022 走看看