/*
 * @topic T00245 Binary numbers
 * @brief <br /><span style="background-color: yellow;">New: </span> Convert number to binary notation<br />
*/


#include <iostream>
void char_2_binary( char ch ); // function declaration
void int_2_binary( unsigned int value );

int main()
{
    for(;;) {
        std::cout << "Please type a number: ";
        int number;
        std::cin >> number;
        int_2_binary( number );
    }
    return 0;
}

void int_2_binary( unsigned int value )
{
    // calculate number of bits in int
    unsigned int bit_count = sizeof(int) * 8;

    // create a bit mask with highest bit set to 1, e.g. 10000000
    unsigned int bit_mask = 1;
    bit_mask = bit_mask << (bit_count - 1);

    for ( ; bit_count > 0; --bit_count ) {
        // display space after every 8th digit:
        if ( bit_count % 8 == 0 ) std::cout << ' ';
        // display 1 or 0 for each bit indicated by the mask
        if ( value & bit_mask ) std::cout << '1'; else std::cout << '0';

        //bit_mask = bit_mask / 2; // shift bits to the left using integer division
        bit_mask = bit_mask >> 1;  // shift bits to the left using bit shift op
    }
    std::cout << '\n';
}