Кто-нибудь может объяснить логи c для этого вывода? - PullRequest
1 голос
/ 20 апреля 2020

Я печатаю строку (созданную с помощью bitset в stl), а затем печатаю строку напрямую и, используя l oop, почему есть разница в выводе?

#include<iostream>
#include<bitset>
using namespace std;
int main()
{
    const int m=16;
    int n;
    int arr[m];
        cin>>n;
        bitset<m>bt(n);
        cout<<bt<<endl;
        for(int i=0;i<m;i++)
        {
            cout<<bt[i];
        }
}

Ввод:
995

Вывод:
0000001111100011 // Печать строки
1100011111000000 // Печать с использованием l oop

вывод одного обратный другой.
Я не понимаю, почему это происходит?

Ответы [ 2 ]

1 голос
/ 20 апреля 2020
cout << bt << endl;

Приведенное выше число печатает желаемое число

cout << bt[0] << endl;

, однако, когда мы индексируем растровое изображение, индексация начинается с самого правого бита или LSB.

Как указано на http://www.cplusplus.com/reference/bitset/bitset/operator [] /

Позиции ордера отсчитываются от самого правого бита, который является позицией ордера 0.

0 голосов
/ 20 апреля 2020

Это соответствует способу, которым биты обычно нумеруются, [0] представляет младший бит (младший значащий бит). Когда вы преобразуете битовый набор в строку - он будет содержать биты в обратном порядке, причем первый символ соответствует N-1 -ому биту.

...