#include <iostream>
using namespace std;
int GetIntFromBitArray(string s)
{
int result = 0;
while (s.length() < 32) //Если число имеет вид 1111, приводим к виду 000...0001111
s = '0' + s;
for(int i = 0; i < 32; i++)
{
if ((s[i] != '0') && (s[i] != '1')) return 0; //Если строка состоит не только из нулей и единиц, то выходим
result <<=1; //Делаем побитовый сдвиг влево, чтобы уже записанные биты не трогать
result += s[i] - '0';
/* Записываем 0 или 1 в зависимости от того, что у нас в строке.
* Вычитаем код нуля чтобы в итоге получился 0 физически
* (т.к. если написать просто result += s[i], он будет складывать не сам ноль,
* а его код, в ascii-таблице это 48).
*/
}
return result;
}
int main()
{
string input;
int x;
// cout << "Input a string"<< endl; //1111
// cin >> input;
input = "1111";
x = GetIntFromBitArray(input); //15
cout << x;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIAppbnQgR2V0SW50RnJvbUJpdEFycmF5KHN0cmluZyBzKQp7CiAgICBpbnQgcmVzdWx0ID0gMDsKICAgIHdoaWxlIChzLmxlbmd0aCgpIDwgMzIpIC8v0JXRgdC70Lgg0YfQuNGB0LvQviDQuNC80LXQtdGCINCy0LjQtCAxMTExLCDQv9GA0LjQstC+0LTQuNC8INC6INCy0LjQtNGDIDAwMC4uLjAwMDExMTEKICAgICAgICBzID0gJzAnICsgczsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCAzMjsgaSsrKQogICAgewogICAgICAgIGlmICgoc1tpXSAhPSAnMCcpICYmIChzW2ldICE9ICcxJykpIHJldHVybiAwOyAvL9CV0YHQu9C4INGB0YLRgNC+0LrQsCDRgdC+0YHRgtC+0LjRgiDQvdC1INGC0L7Qu9GM0LrQviDQuNC3INC90YPQu9C10Lkg0Lgg0LXQtNC40L3QuNGGLCDRgtC+INCy0YvRhdC+0LTQuNC8CiAgICAgICAgcmVzdWx0IDw8PTE7IC8v0JTQtdC70LDQtdC8INC/0L7QsdC40YLQvtCy0YvQuSDRgdC00LLQuNCzINCy0LvQtdCy0L4sINGH0YLQvtCx0Ysg0YPQttC1INC30LDQv9C40YHQsNC90L3Ri9C1INCx0LjRgtGLINC90LUg0YLRgNC+0LPQsNGC0YwKICAgICAgICByZXN1bHQgKz0gc1tpXSAtICcwJzsgCi8qINCX0LDQv9C40YHRi9Cy0LDQtdC8IDAg0LjQu9C4IDEg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINGC0L7Qs9C+LCDRh9GC0L4g0YMg0L3QsNGBINCyINGB0YLRgNC+0LrQtS4gCiAqINCS0YvRh9C40YLQsNC10Lwg0LrQvtC0INC90YPQu9GPINGH0YLQvtCx0Ysg0LIg0LjRgtC+0LPQtSDQv9C+0LvRg9GH0LjQu9GB0Y8gMCDRhNC40LfQuNGH0LXRgdC60LggCiAqICjRgi7Qui4g0LXRgdC70Lgg0L3QsNC/0LjRgdCw0YLRjCDQv9GA0L7RgdGC0L4gcmVzdWx0ICs9IHNbaV0sINC+0L0g0LHRg9C00LXRgiDRgdC60LvQsNC00YvQstCw0YLRjCDQvdC1INGB0LDQvCDQvdC+0LvRjCwgCiAqINCwINC10LPQviDQutC+0LQsINCyIGFzY2lpLdGC0LDQsdC70LjRhtC1INGN0YLQviA0OCkuIAogKi8KICAgIH0KICAgIHJldHVybiByZXN1bHQ7Cn0KIAogCmludCBtYWluKCkKewogICAgc3RyaW5nIGlucHV0OwogICAgaW50IHg7CiAgLy8gIGNvdXQgPDwgIklucHV0IGEgc3RyaW5nIjw8IGVuZGw7IC8vMTExMQogIC8vICBjaW4gPj4gaW5wdXQ7CiAgICBpbnB1dCA9ICIxMTExIjsKICAgIHggPSBHZXRJbnRGcm9tQml0QXJyYXkoaW5wdXQpOyAvLzE1CiAgICBjb3V0IDw8IHg7CiAgICByZXR1cm4gMDsKfQ==