// @topic W120101 int to binary string conversion
// @brief Demonstrates bit shift operators in C/C++

// display_bits.cpp

#include <iostream>
#include <cstdlib>

void print_binary_number( int value );

int main()
{
    int inp;
    for(;;) {
        std::cout << "\nEnter a number: ";
        std::cin >> inp;
        print_binary_number( inp );
    }
    system( "pause" );
    return 0;
}

void print_binary_number( int value )
{
    // calculate number of bits in int
    const unsigned int NUMBER_OF_BITS = sizeof( int ) * 8u;
    unsigned int loop_count = NUMBER_OF_BITS;

    // set highest bit in mask to 1:
    unsigned int mask = ( 1u << ( NUMBER_OF_BITS - 1u ) );

    // print bits of value
    while ( loop_count-- ) {
        if (value & mask) {
            std::cout << '1';
        } else {
            std::cout << '0';
        }
        if (loop_count % 8 == 0) std::cout << ' ';
        mask >>= 1;
    }
    std::cout << '\n';
}