注意:这个只能识别整数部分,小数部分不能用。
 
一个二进制串,比如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 << '\n';
    } else {
        std::cout << "no set bits\n";
    }
}
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() << '\n'
              << b.to_string('*') << '\n'
              << b.to_string('O', 'X') << '\n';
}


/*
Output:
00101010
**1*1*1*
OOXOXOXO
*/
View Code

 

 

 

 posted on 2013-09-23 20:56  ∑求和  阅读(1338)  评论(0编辑  收藏  举报