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

  • 相关阅读:
    LeetCode Flatten Binary Tree to Linked List
    LeetCode Longest Common Prefix
    LeetCode Trapping Rain Water
    LeetCode Add Binary
    LeetCode Subsets
    LeetCode Palindrome Number
    LeetCode Count and Say
    LeetCode Valid Parentheses
    LeetCode Length of Last Word
    LeetCode Minimum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/runningRain/p/5935949.html
Copyright © 2011-2022 走看看