Вывод числа в двоичном виде с использованием побитовых операций

Задача: написать программу, которая читает короткие беззначные числа и выводит их в двоичном виде. Не выводить нули в начале числа. Просмотрел кучу видосов и инфы, вроде понимаю, как работают битовые операции, но как осуществить задание, в голове не укладывается. Есть пример кода с методички, но не понимаю, что в нем происходит, хоть убей.

#include <iostream>

using namespace std;

void main()
{
   unsigned short int k = 1;
   while (true)
   {
       cin >> k;
       for (int i = 0; i < 16; i++)
       {
           cout << (k >> 15);
           k <<= 1;
       }
       cout << endl;
   }
}

Разъясните, как происходит представление в двоичный вид, пожалуйста, или хотя бы направьте на трушный путь понимания.


Ответы (1 шт):

Автор решения: Harry

Ну, эта программа выводит нули в начале числа...

Смотрите, short int — это 16 бит. k>>15 дает старший бит числа, его и выводим. k <<= 1 сдвигает число на 1 бит влево, и старшим становится следующий бит. И так 16 раз, от первого бита по старшинству и до последнего.

Теперь понятно, как не выводить нули вначале? Добавьте переменную-флаг, которая "взводится" при первом единичном бите, а пока она не взведена — ничего не выводить...

→ Ссылка