Использование библиотеки битов - PullRequest
0 голосов
/ 23 марта 2011

Я делаю свои первые шаги с C ++ и с некоторой помощью я создал код, чтобы сделать легкую функцию. Но у меня есть проблема. Я использую функцию набора битов, для которой нужна определенная библиотека, и я не знаю, кто должен представить эту библиотеку в моем коде.

Я читаю некоторую информацию в сети, но не могу этого сделать, поэтому мне интересно, кто-нибудь из вас может подробно рассказать мне, как это сделать.

Так что вы можете составить идею, которую я искал в http://www.boost.org/doc/libs/1_36_0/libs/dynamic_bitset/dynamic_bitset.html, http://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 Ответ

1 голос
/ 23 марта 2011

Если вы не хотите, чтобы ваш 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 class, вы должны загрузить библиотеки Boost и добавить папку boost в каталоги включения вашего компилятора.Если вы используете компилятор GNU C ++, вы должны что-то вроде:

g++ -I path/to/boost_1_46_1 mycode.cpp -o mycode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...