zoukankan      html  css  js  c++  java
  • C++ bitset的用法

    注意:这个只能识别整数部分,小数部分不能用。
     
    一个二进制串,比如0110101,第 0 位是最右边的一位,是1,第 6 位是最左边一位,是0.
     
     
    定义及初始化:
     
    bitset<8> b1;  //默认构造函数,一定要设置位数,此次设为8位. [0 0 0 0 0 0 0 0]
    bitset<8> b2(42);  //赋值 b2 为7. [0 0 1 0 1 0 1 0]
     
    string bit_string = "110010";

    bitset<8> b3(bit_string); //[0 0 1 1 0 0 1 0]

    函数:
     
    bitset<N>& set();  设置所有位为1

    bitset<N>& set(size_t pos,bool value=true);  设置某个位置的值为1

    bitset<N>& reset();  设置所有位为0

    bitset<N>& reset(size_t pos,bool value=true);  设置某个位置的值为0

    bitset<N>& flip();  翻转所有位,1变0,0变1

    bitset<N>& flip(size_t pos);  翻转某一位

    bool test( size_t pos ) cosnt;  如果pos位置值为1,返回true,否则false

    examp:求一个二进制的最低位(最右边)的 1 在哪个位置

    #include <iostream>
    #include <bitset>
     
    int main() 
    {
        std::bitset<10> b1("1111010000");
     
        size_t idx = 0;
        while (idx < b1.size() && !b1.test(idx)) {
          ++idx;
        }
     
        if (idx < b1.size()) {
            std::cout << "lowest set bit at index " << idx << '
    ';
        } else {
            std::cout << "no set bits
    ";
        }
    }
    View Code

    bool all() const;  如果所有位的值都为1,返回true,否则false

    bool any() const;  如果有一位值为1,返回true,否则false

    bool none() const;  如果所有位值都不为1,返回true,否则false

    size_t count() const;  返回二进制中1的个数

    size_t size() const;  返回二进制的位数

    to_string(CharT zero = CharT('0'), CharT one = CharT('1')) const;

    用法示例:

    #include <iostream>
    #include <bitset>
    int main()
    {
        std::bitset<8> b(42);
        std::cout << b.to_string() << '
    '
                  << b.to_string('*') << '
    '
                  << b.to_string('O', 'X') << '
    ';
    }
    
    
    /*
    Output:
    00101010
    **1*1*1*
    OOXOXOXO
    */
    View Code
  • 相关阅读:
    湘潭大学 Hurry Up 三分,求凹函数的最小值问题
    hdu 1166 线段树 单点修改 + 询问区间求和 (线段树模板)
    hdu 1166 树状数组(模板) 更改点值+求区间和
    getline
    poj 1873 The Fortified Forest 凸包+位运算枚举 world final 水题
    C# 代码操作XML(增、删、改)
    C# Socket服务端与客户端通信(包含大文件的断点传输)
    MD5 十六进制加密
    C# 面向对象——多态
    C# 面向对象——继承
  • 原文地址:https://www.cnblogs.com/54zyq/p/3335671.html
Copyright © 2011-2022 走看看