1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // Copyright (c) 2001 Jeremy Siek
- // Copyright (c) 2008 Gennaro Prota
- // Distributed under the Boost Software License, Version 1.0. (See
- // accompanying file LICENSE_1_0.txt or copy at
- // http://www.boost.org/LICENSE_1_0.txt)
- //
- // Sample run:
- //
- // mask = 101010101010
- // x.size() = 0
- // Enter a bitset in binary: x = 100100010
- //
- // Input number: 100100010
- // x.size() is now: 9
- // As unsigned long: 290
- // Mask (possibly resized): 010101010
- // And with mask: 000100010
- // Or with mask: 110101010
- // Shifted left by 1: 001000100
- // Shifted right by 1: 010010001
- #include "boost/dynamic_bitset.hpp"
- #include <ostream>
- #include <iostream>
- int main()
- {
- boost::dynamic_bitset<> mask(12, 2730ul);
- std::cout << "mask = " << mask << std::endl;
- boost::dynamic_bitset<> x;
- std::cout << "x.size() = " << x.size() << std::endl;
- std::cout << "Enter a bitset in binary: x = " << std::flush;
- if (std::cin >> x) {
- const std::size_t sz = x.size();
- std::cout << std::endl;
- std::cout << "Input number: " << x << std::endl;
- std::cout << "x.size() is now: " << sz << std::endl;
- bool fits_in_ulong = true;
- unsigned long ul = 0;
- try {
- ul = x.to_ulong();
- } catch(std::overflow_error &) {
- fits_in_ulong = false;
- }
- std::cout << "As unsigned long: ";
- if(fits_in_ulong) {
- std::cout << ul;
- } else {
- std::cout << "(overflow exception)";
- }
- std::cout << std::endl;
- mask.resize(sz);
- std::cout << "Mask (possibly resized): " << mask << std::endl;
- std::cout << "And with mask: " << (x & mask) << std::endl;
- std::cout << "Or with mask: " << (x | mask) << std::endl;
- std::cout << "Shifted left by 1: " << (x << 1) << std::endl;
- std::cout << "Shifted right by 1: " << (x >> 1) << std::endl;
- }
- return 0;
- }
|