Chuyển số nhị phân (chuỗi '0'/'1') sang thập phân.
Cách làm: Duyệt chuỗi từ phải sang trái, nếu ký tự '1' thì cộng thêm 2^vị_trí (bắt đầu từ 1, nhân 2 mỗi bước).
Ví dụ
Input: 1010 0*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 0+2+0+8 = 10
Thuật toán
Bắt đầu
Bước 1: Hàm convert(string str)
val = 0, temp = 1
Với i từ len-1 xuống 0:
Nếu str[i] == '1' -> val += temp
temp *= 2
Trả về val
Bước 2: main()
val = "11101"
In convert(val)
Kết thúc
Ví dụ code
#include <iostream>
#include <string>
using namespace std;
int convert(string str) {
int val = 0, temp = 1;
int len = str.length();
for (int i = len - 1; i >= 0; i--) {
if (str[i] == '1') val += temp;
temp *= 2;
}
return val;
}
int main() {
string val = "11101";
cout << val << " chuyen sang thap phan: " << convert(val);
return 0;
}
Kết quả
11101 chuyen sang thap phan: 29