Порядковый или обратный порядок?
for (int i = 0; i < s.length(); i++)
for (char c = 1; c; c <<= 1) // little bits first
std::cout << (s[i] & c ? "1" : "0");
for (int i = 0; i < s.length(); i++)
for (unsigned char c = 0x80; c; c >>= 1) // big bits first
std::cout << (s[i] & c ? "1" : "0");
Поскольку я слышу какое-то ворчание по поводу переносимости предположения, что char
- это 8-битный байт в комментариях к другим ответам ...
for (int i = 0; i < s.length(); i++)
for (unsigned char c = ~((unsigned char)~0 >> 1); c; c >>= 1)
std::cout << (s[i] & c ? "1" : "0");
Это написано с очень C
-тишской точки зрения ... если вы уже используете C ++ с STL, вы также можете пройти весь путь и воспользоваться функциональностью набора битов STL вместо игры со строками.