使用bitset库

时间:2011-03-23 11:20:16

标签: c++ bitset

我正在使用C ++完成我的第一步,并在一些帮助下创建了一个代码来实现简单的功能。但我有一个问题。我正在使用需要特定库的bitset函数,我不知道在我的代码中将这个库引入谁。

我一直在阅读网上的一些信息,但我没有做到这一点,所以我想知道你们中是否有人能详细告诉我该怎么做。

这样你就可以了解我一直在http://www.boost.org/doc/libs/1_36_0/libs/dynamic_bitset/dynamic_bitset.htmlhttp://www.boost.org/doc/libs/1_46_0/libs/dynamic_bitset/dynamic_bitset.html#cons2和类似的地方。

我附上了我的代码,以便你知道我在做什么。

提前致谢:)

// Program that converts a number from decimal to binary and show the positions where the bit of the number in binary contains 1

#include<iostream>
#include <boost/dynamic_bitset.hpp>
int main() {
unsigned long long dec;
std::cout << "Write a number in decimal: ";
std::cin >> dec;
boost::dynamic_bitset<> bs(64, dec);
std::cout << bs << std::endl;
for(size_t i = 0; i < 64; i++){
    if(bs[i])
        std::cout << "Position " << i << " is 1" << std::endl;
}
//system("pause");
return 0;

}

1 个答案:

答案 0 :(得分:1)

如果您不希望bitset动态增长,您可以使用内置的bitset符合所有符合标准的C ++实现:

#include <iostream>
#include <bitset>

int main() {
  unsigned long long dec;
  std::cout << "Write a number in decimal: ";
  std::cin >> dec;
  const size_t number_of_bits = sizeof(dec) * 8;
  std::bitset<number_of_bits> bs(dec);
  std::cout << bs << std::endl;
  for (size_t i = 0; i < number_of_bits; i++) {
    if (bs[i])
      std::cout << "Position " << i << " is 1" << std::endl;
  }
  return 0;
}

要使用dynamic_bitset类,您必须下载Boost库并将boost文件夹添加到编译器的include目录中。如果您使用的是GNU C ++编译器,您应该这样:

g++ -I path/to/boost_1_46_1 mycode.cpp -o mycode