fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. int GetIntFromBitArray(string s)
  7. {
  8. int result = 0;
  9. while (s.length() < 32) //Если число имеет вид 1111, приводим к виду 000...0001111
  10. s = '0' + s;
  11. for(int i = 0; i < 32; i++)
  12. {
  13. if ((s[i] != '0') && (s[i] != '1')) return 0; //Если строка состоит не только из нулей и единиц, то выходим
  14. result <<=1; //Делаем побитовый сдвиг влево, чтобы уже записанные биты не трогать
  15. result += s[i] - '0';
  16. /* Записываем 0 или 1 в зависимости от того, что у нас в строке.
  17.  * Вычитаем код нуля чтобы в итоге получился 0 физически
  18.  * (т.к. если написать просто result += s[i], он будет складывать не сам ноль,
  19.  * а его код, в ascii-таблице это 48).
  20.  */
  21. }
  22. return result;
  23. }
  24.  
  25.  
  26. int main()
  27. {
  28. string input;
  29. int x;
  30. // cout << "Input a string"<< endl; //1111
  31. // cin >> input;
  32. input = "1111";
  33. x = GetIntFromBitArray(input); //15
  34. cout << x;
  35. return 0;
  36. }
Success #stdin #stdout 0.02s 2812KB
stdin
Standard input is empty
stdout
15