если входные данные:
73 68 69 65
выходные данные должны выглядеть следующим образом:
0 1 0 0 1 0 0 1 ///73 in binary form
0 1 0 0 0 1 0 0 ///68 in binary form
0 1 0 0 0 1 0 1 ///69 in binary form
0 1 0 0 0 0 0 1 ///65 in binary form
Матрица имеет 8 столбцов, как указано выше, и каждая строка содержит двоичную форму десятичное число.
На данный момент это мой код:
int n, x;
cin >> n;
auto A = vector<vector<int>>(n, vector<int>(8)); ///8 columns as mentioned
while (n--)
{
cin >> x;
for (int j = 8; j >= 0; --j) ///inserting the digits for each number
if ((x >> j) & 1)
A[i].emplace_back(1);
else
A[i].emplace_back(0);
}
for (auto rows : A)
{
for (auto elements : rows)
cout << elements << " ";
cout << "\n";
}
Я пытался использовать побитовую операцию, но для меня подойдет любой метод, использующий vector<vector<int>>
.
Если бы вы могли ответить, это было бы очень признательно, спасибо за чтение и ответы!
Также вторая проблема, она показывает мне 16 ди git 000000000001001001 вместо 01001001, много нулей в начале, если на входе, например, 73.