2013-06-27 1 views
2

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

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

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

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

+2

Вот как обычно пронумерованы биты: бит в правой части бит равен нулю, потому что его значение равно 2^0. Второй бит справа бит бит, потому что его значение равно 2^1. И так далее. –

+0

Другими словами, он не отменяется. 0-й бит равен 1, остальное - 0, а индексирование соответствует этому соглашению. – juanchopanza

+0

Почему вы хотите инициализировать его в обратном порядке? – PlasmaHH

ответ

3

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

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

не имеет Порядок байтов ничего общего с ним.

+0

Благодарим вас за объяснение. – dahma