Почему набор битов C ++, инициализированный с помощью строки, переворачивается?

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

bitset<3> test(string("001"));

тогда биты сохраняются как показано ниже:
тест [0] = 1
тест [1] = 0
тест [2] = 0

Я не уверен, что делаю что-то не так или так и должно быть.

2

Решение

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

Другими словами, значение в test[0] это бит 2 ^ 0, test[1] 2 ^ 1, test[2] 2 ^ 2 и т. д.

Endianness не имеет к этому никакого отношения.

3

Другие решения

Других решений пока нет …