Search code examples
c++bitshort

How can I view a short's bit representation?


If I have this as pointer to memory as a pointer to shorts:

unsigned short* ms = reinterpret_cast<unsigned short*>(_memory);

and I know the size of ms (number of this shorts), I would like to see running through all these shorts and their binary representation.

How can I access the bits of each short in C++?


Solution

  • cout << "\t" << dec << x << "\t\t Decimal" << endl;
    cout << "\t" << oct << x << "\t\t Octal" << endl;
    cout << "\t" << hex << x << "\t\t Hex" << endl;
    cout << "\t" << bitset<MAX_BITS>(x) << endl;
    

    try through bitset

    EDIT(added code)

    #include <iostream>
    #include <bitset>
    using namespace std;
    
    int main( int argc, char* argv[] )
    {
      unsigned short _memory[] = {0x1000,0x0010,0x0001};
      unsigned short* ms = reinterpret_cast<unsigned short*>(_memory);
      for(unsigned short* iter = ms; iter != ms + 3/*number_of_shorts*/; ++iter )
      {
        bitset<16> bits(*iter);
        cout << bits << endl;
        for(size_t i = 0; i<16; i++)
        {
          cout << "Bit[" << i << "]=" << bits[i] << endl;
        }
        cout << endl;
      }
    }
    

    or

    #include <iostream>
    #include <algorithm>
    #include <bitset>
    #include <iterator>
    
    int main( int argc, char* argv[] )
    {
        unsigned short _memory[] = {0x1000,0x0010,0x0001};
        unsigned short* ms = reinterpret_cast<unsigned short*>(_memory);
        unsigned int num_of_ushorts = 3;//
    
        std::copy(ms, ms+num_of_ushorts, ostream_iterator<bitset<16>>(cout, " "));
    }